为id和viewmodel字段的名称添加前缀

时间:2014-01-17 21:16:20

标签: c# asp.net-mvc asp.net-mvc-5 razor-3

在我的项目中,我使用了许多动态加载的视图/表单。在我的表单中,使用@Html.TextBoxFor()生成了很多字段,然后在我的javascript逻辑中使用@Html.IdFor(), @Html.NameFor()

我的一些视图模型具有相同名称的字段(Id,Name,Description等),因此如果我在1页上有2个具有此类视图模型的表单,那么我有一个问题(相同的id属性用于超过一个元素)。

所以我想知道我是否可以将一些服务器端元数据/属性添加到我的viewmodels中,其前缀将添加到生成的id和名称中?或者,如果有另一个解决方案不需要重命名我的视图模型或视图。

2 个答案:

答案 0 :(得分:0)

尝试使用:

    @Html.TextBoxFor(m => m.id,new {@class="class",id=[but here the id you want]})

答案 1 :(得分:0)

您可以在javascript代码中使用输入的“name”属性...这些属性会自动生成。

如果你有一个像这样的组合ViewModel:

public class MyViewModel{
   public MySecondModel Sencond {get; set;}
   public MySecondModel Third {get; set;}
}

public class MySecondModel {
   public string Name {get; set;}
   public string Description {get; set;}
}

然后你在这样的观点中使用它:

@Html.TextBoxFor(x => x.Second.Name)
@Html.TextBoxFor(x => x.Third.Name)

name属性将变为:“Second_Name”和“Third_Name

所以...它不会重复。