0

简单的问题......这是一些剃须刀代码的示例:

@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" />

你问的明显问题是,“你为什么这样做?”。Razor 视图实际上是构建在 KendoUI 网格中使用的客户端详细信息行模板。有两个相似的网格,我们使用相同的视图模型服务器端。实际上,我们确实为模板提供了 id 元素,因此每行中的每个字段最终都有一个唯一的 id。

为什么第二个输入元素没有 data-val 和 data-val-number 元素?

4

2 回答 2

2

知道 JS 在后台做什么,我突然想到这样做是为了防止冲突。JS 会查找具有 data- 属性的元素以及其他函数来进行验证,因此如果有多个实例,它可能会选择错误的元素。

于 2012-10-19T19:41:17.100 回答
1

因为我们正在生成用于客户端模板的 HTML,所以我们所做的只是创建一个变量来保存由帮助程序生成的 HTML,然后在视图中呈现该代码。

就像是:

@{
   var revisedEstimateInput = Html.TextBoxFor(c => c.RevisedEstimate)
}

然后在视图中:

@(revisedEstimateInput) 

...根据需要在尽可能多的地方。这样,验证和其他元数据属性就在我们的客户端模板中,并且所有 kenodUI 验证都正常工作。

于 2012-10-26T21:23:18.167 回答