ASP.Net MVC编辑器模板Id错误
本文关键字:Id 错误 编辑器 Net MVC ASP | 更新日期: 2023-09-27 18:16:53
所以我有一个名为Area
的double
字段。我是这样打印的:
<div>@Html.EditorFor(model => model.Area)</div>
我的双人版编辑器模板如下:
@{
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>
很好,但是为什么html元素错成了<input id="Area_Area" />
,而jQuery选择器正确地变成了$("#Area")
呢?
当我观看NameFor
和IdFor
的解bug时,它们都返回"Area">。
更新:
我的htmlAttributes
(正如@DarinDimitrov所问(返回此数组:
["data-min": "0.0", "data-format": "0,2"]
在视图中填充大量内联脚本(每个编辑器模板一个(有什么意义,当你可以简单地将class="number"
附加到输入字段,然后将你的javascript外部化到一个单独的文件中(这是javascript所属的文件(,并简单地使用类选择器:
$(document).ready(function () {
$(".number").restrictNumber();
});
@System.Web.Mvc.Html.InputExtensions.TextBox(this.Html, "", value, htmlAttributes);
这解决了我的问题。重点是,MVC知道模型名称,所以你不必告诉他要打印什么。如果您这样做,它将与模型名称连接。但我真的不知道它为什么会这样。