[英]ASP.NET MVC: Populating Derived Strongly Typed View with Base Strongly Typed View
[英]How to create a strongly typed view during runtime in ASP.NET MVC?
我正在使用ASP.NET MVC,并且需要在运行时根据用户选择创建新视图。 这些视图一旦创建,就需要保存在存储中,以便可以重复使用。 我更喜欢这些视图是强类型的。 当然,每个新视图的模型类都不存在,并且这些类将根据用户创建的内容具有新属性。
例如,如果用户选择一个文本框并希望它用于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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.