如何在运行时期间创建强类型视图.净MVC
本文关键字:强类型 视图 MVC 创建 运行时 | 更新日期: 2023-09-27 17:53:26
我使用的是ASP。并且需要在运行时根据用户选择创建新视图。这些视图一旦创建,就需要保存在存储中,以便重用。我希望这些视图是强类型的。当然,每个新视图的模型类并不存在,这些类将根据用户创建的内容拥有新的属性。
例如,如果用户选择了一个文本框,并希望它用于firstname,最终我想有一个类动态创建一个名为firstname的公共属性…等等......一切都是动态创建的。
我想知道如何处理这件事。动态源代码生成和编译是否适用于这个工作流程,或者它是否比它应该的更复杂?
更新:
一个用例是,如果需要根据用户选择的数据库表创建表单。如果有数百个表,我就不会创建数百个视图。我知道我可以在这个例子中使用gridview,但对于所有情况,动态视图更合适。
您的用户选择是数据,而不是代码:
- 根据用户选择创建数据结构。
- 将它们保存在数据库中供以后使用。
- 编写一个视图来获取这些数据结构(作为模型)并显示它们
- 编辑模板可以用来显示每个单独的控件,使用强类型的视图。
public class Page
{
public List<Control> Controls { get; set; }
}
public class Textbox : Control
{
public string Label { get; set; }
public string Value { get; set; }
}
Page.cshtml
@model Page
@for (int i 0; i < Model.Controls.Count; i++)
{
// Render using the EditorTemplate view for the control's type
@Html.EditorFor(m => m.Controls[i])
}
EditorTemplates/Textbox.cshtml
@model Textbox
@Html.HiddenFor(m => m.ControlId)
@Html.LabelFor(m => m.Value, Model.Label)
@Html.TextBoxFor(m => m.Value)