使用带Razor MVC的Variable属性Name

时间:2016-10-05 05:17:24

标签: asp.net-mvc

我正在尝试将用于特定搜索的所有模型放入一个通用搜索视图中。

我只需要渲染模型中的一些字段,或者使用类似的东西:( 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魔术显示它

我的问题是这种正确的方法,如果是这样,我该如何实现它,寻找动态渲染的一些例子(如果这是这个主题的名称)

1 个答案:

答案 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的不同显式视图。这样可以提供更大的灵活性,更易于理解和维护。