我正在尝试将用于特定搜索的所有模型放入一个通用搜索视图中。
我只需要渲染模型中的一些字段,或者使用类似的东西:( Psudo code)
foreach (string textBoxFieldName in TextBoxFieldNames)
{
Html.Toolbox_TextBoxFor(m => m.textBoxFieldName)
}
或在模型上具有属性并检查该属性何时适用,例如 在模型中,我会有这样的事情:
[AppliedCases("Case1","Case4","Case77")]
[ControlToUse("TextBoxFor")]
public string LastName { get; set; }
视图中的一些如何能够通过所有属性检查如果CurrentCase是Model属性的AppliedCases之一,如果是,那么使用Razor魔术显示它
我的问题是这种正确的方法,如果是这样,我该如何实现它,寻找动态渲染的一些例子(如果这是这个主题的名称)
答案 0 :(得分:1)
您可以使用Html.Editor
的重载来获取要呈现的属性的名称(作为字符串):
var fieldNames = new string[] {"LastName"};
foreach (string fieldName in fieldNames) {
@Html.Editor(fieldName)
}
您可以使用ViewModel中的UIHint
属性来影响应使用哪个编辑器模板:
[UIHint("MySpecialStringEditor")]
public string LastName { get; set; }
在我工作的商店,我们不使用这种方法。相反,我们使用相同ViewModel的不同显式视图。这样可以提供更大的灵活性,更易于理解和维护。