所以我有一个名为double
的{{1}}字段。我这样打印:
Area
My EditorTemplate for Double看起来像这样:
<div>@Html.EditorFor(model => model.Area)</div>
很好,但为什么html元素出错为@{
var attributes = this.ViewData.ModelMetadata.ContainerType.GetProperty(this.ViewData.ModelMetadata.PropertyName).GetCustomAttributes(true);
var htmlAttributes = GAtec.AgroWeb.Basic.Ux.Web.Helpers.EditorTemplateHelper.GetAllAttributes(ViewData, attributes);
var decimalPlaces = htmlAttributes["data-format"].ToString().Split(',');
var value = decimalPlaces.Length > 1 ? Model.ToString("n" + decimalPlaces[1]) : Model.ToString();
@System.Web.Mvc.Html.InputExtensions.TextBox(this.Html, Html.NameFor(model => model).ToString(), value, htmlAttributes);
}
<script>
$(document).ready(function () {
$("#@Html.IdFor(model => model)").restrictNumber();
});
</script>
而jQuery选择器出现为<input id="Area_Area" />
?
当我在点击时观看它们时,$("#Area")
和NameFor
都会返回“区域”。
更新:
我的IdFor
(如@DarinDimitrov问)返回此数组:
htmlAttributes
答案 0 :(得分:2)
当您只需将class="number"
附加到输入字段然后将您的javascript外部化到单独的文件中时,在视图中填充内联脚本(每个编辑器模板一个)的重点是什么? javascript所属的地方)只需使用类选择器:
$(document).ready(function () {
$(".number").restrictNumber();
});
答案 1 :(得分:1)
@System.Web.Mvc.Html.InputExtensions.TextBox(this.Html, "", value, htmlAttributes);
这解决了我的问题。关键是,MVC知道模型名称,因此您不必说他要打印什么。如果这样做,它将与模型名称连接。但为什么会这样做,我真的不知道。