在不同类型之间安全地重用编辑器模板

时间:2019-05-16 20:09:43

标签: c# asp.net-mvc mvc-editor-templates

假设我对位于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的显式强制转换。)

1 个答案:

答案 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; }