假设我对位于Decimal
的{{1}}具有以下局部视图:
"~/Views/Shared/EditorTemplates/Decimal.cshtml"
我还想将此模板用于@model decimal?
@{
var attrs = ViewData;
if (ViewData["type"] == null)
{
attrs.Add("type", "number");
}
}
@Html.TextBoxFor(m => m, attrs)
类型的属性。因此,我在Int32
创建了以下内容:
"~/Views/Shared/EditorTemplates/Int32.cshtml"
是否有更好的方法来重用编辑器模板?我可能会错过的这种模式有什么后果吗?
(编辑:添加了从@model int?
@Html.Partial("~/Views/Shared/EditorTemplates/Decimal.cshtml", (decimal?)Model)
到int
的显式强制转换。)
答案 0 :(得分:0)
您可以整体定义一个EditorTemplate。一旦定义了两种数据类型。 例如,您可以使用以下代码示例:
EditorTemplate的定义:
~/Views/Shared/EditorTemplates/Number.cshtml
视图中助手的用法:
@Html.EditorFor(model => model.SomeValue)
ViewModel类中的定义为
[UIHint("Number")]
public int SomeValue { get; set; }
OR
[UIHint("Number")]
public decimal SomeValue { get; set; }