我正在实现一个自定义用户配置文件屏幕。
这几乎是一个典型的用户配置文件屏幕,您可以在任何有某种成员资格元素的网站上找到它。
在我的例子中,由于屏幕是市场调研SAS产品的一部分,因此显示在配置文件上的数据点将因市场调研产品而异。该产品的主持人将通过提供以下信息来指定需要捕获哪些数据点:
字段名、显示名称、字段类型(文本、数字、无线电按钮、复选框等),必需的…
我想弄清楚如何动态地生成MVC视图以反映所请求的数据点列表。我希望尽可能多地使用MVC框架,而不必编写自己的助手来生成html。如果可能的话,我也想使用不引人注目的验证。
在这一点上,我对什么是最好的方法感到困惑。
我是否尝试使用:
。
还有其他可能更有意义的方法(jQuery模板)、编辑器模板、一系列部分视图吗?
发布于 2011-06-24 17:15:09
如果您不确定要为任何给定的操作向服务器提交什么,则可以让该操作在FormCollection类型的参数中进行,然后迭代这些字段。此时,您可能希望逐个处理每种类型的字段,使用该字段的名称作为键。
为了将项发送到视图,只需包装类中每个字段的数据,如下所示:
public class DataPoint
{
public string FieldName { get; set; }
public string DisplayName { get; set; }
public object Value { get; set; }
}然后让您的视图迭代您的DataPoint。EditorFor()方法将处理Value的类型检查,以生成正确的输入类型。这里唯一棘手的部分是将FieldName作为输入的名称。
将类作为运行时构建将是一项工作量过大的工作,而这些工作最初并不是非常复杂的。除非您知道要绑定到的模型(这是问题的根源),否则自定义ModelBinder不会帮助您。
发布于 2011-06-25 20:03:47
您能继续使用所有由命名div括起来的字段来布局视图吗?然后在render Action中,让Controller添加一个“隐藏”类,定义为
.hidden
{
display:none;
}对于每个包含您不需要的字段的div?
另一个选择是编写动态构建视图的HTML扩展方法。您可以为每个控件类型创建部分视图,并一个接一个地将其插入到呈现的HtmlString中。
https://stackoverflow.com/questions/6471101
复制相似问题