我的ViewModel中有一个类型为"float"的属性.它显示为TextBox,默认值为"0".
我在"Shared"文件夹中添加了一个"EditorTemplates"文件夹,并创建了一个新的"Float.cshtml"文件,其中包含以下内容:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue == 0 ? "" : ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" })
Run Code Online (Sandbox Code Playgroud)
但是,当我运行应用程序时,浮动字段仍然显示为默认值0.
谢谢
更新 我只是想看看ASP.NET如何对自定义模板做出反应,到目前为止,引擎还没有处理我的自定义模板,类似于:
LatLng.cshtml
@model float
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line "}) Latitude
Run Code Online (Sandbox Code Playgroud)
在ViewModel上,
[UIHint("LatLng")]
public float? Latitude { get; set; }
Run Code Online (Sandbox Code Playgroud)
在视图上,
@Html.EditorFor(model => model.Latitude)
Run Code Online (Sandbox Code Playgroud)
没有任何变化,正在使用默认模板.
Float实际上不是.NET类型,它是C#类型.Float映射到System.Single,因此您需要创建Single.cshtml而不是Float.cshtml.
您还可以通过在模型数据上指定UIHint属性,或指定要在Editor或EditorFor方法中使用的模板来解决此问题.