简单问题......以下是一些剃刀代码的示例:
@Html.TextBoxFor(c => c.RevisedEstimate)
@Html.TextBoxFor(c => c.RevisedEstimate)
以下是呈现方式:
<input data-val="true" data-val-number="The field Revised Estimate must be a number." id="RevisedEstimate" name="RevisedEstimate" type="text" value="0" />
<input id="RevisedEstimate" name="RevisedEstimate" type="text" value="0" />
你问的一个显而易见的问题是,“你为什么这样做?”。剃刀视图实际上构建了在KendoUI网格中使用的客户端详细信息行模板。有两个相似的网格,我们使用相同的viewmodel服务器端。我们实际上为模板提供了id元素,因此每行中的每个字段都以唯一的id结尾。
为什么第二个输入元素没有data-val和data-val-number元素?
答案 0 :(得分:2)
知道JS在后台做了什么,这似乎是为了防止冲突。 JS会查找具有数据属性的元素以及其他函数进行验证,因此如果有多个实例,它可能会选择错误的元素。
答案 1 :(得分:1)
因为我们生成了用于客户端模板的HTML,所以我们所做的只是创建一个变量来保存帮助器生成的HTML,然后在Views中渲染出那些代码。
类似的东西:
@{
var revisedEstimateInput = Html.TextBoxFor(c => c.RevisedEstimate)
}
然后在视图中:
@(revisedEstimateInput)
......根据需要在尽可能多的地方。这样,验证和其他元数据属性就在我们的客户端模板中,并且所有kenodUI验证都能正常工作。