我有一个编辑器模板,但是class,maxlength和size属性没有到达源代码。
@using System.Globalization
@model DateTime?
@Html.TextBox("", (Model != null && Model.HasValue && !Model.Value.ToString(CultureInfo.InvariantCulture).Contains("1900") && !Model.Value.ToString(CultureInfo.InvariantCulture).Contains("0001") ? Model.Value.ToString("MM/dd/yyyy") : string.Empty), new { @class = "datePicker", maxlength = "12", size = "12" })
我已将其更改为以下内容,它仍然是相同的
@Html.EditorFor(x => x.Criteria.FromDate, new { @class = "datePicker", maxlength = "12", size = "12" })
来源
<input class="text-box single-line" id="Criteria_FromDate" name="Criteria.FromDate" type="text" value="" />
我该如何解决这个问题?
答案 0 :(得分:1)
确保您的编辑器模板名为 DateTime - 位于文件夹Views / Shared / EditorTemplates中,您的模型(Criteria.FormDate)与EditorTemplate模型相同类型(的日期时间吗)。
如果所有DateTime字段具有相同的maxlength和size,您可以在EditorTemplate中对它们进行硬编码。 你的html示例:
@EditorFor(x => x.Criteria.FormDate) //no need to pass html attributes object if they are not used in the editor template
- 值得尝试@EditorFor(model, "EditorTemplateName")
明确表示你希望TemplateEditor传递模型。当您有多个相同模型类型的编辑器时就是这种情况,因此您可以显式调用它们(就像调用局部视图并将模型传递给它一样)。
修改强> 在查看您的模板后,在我看来您的Criteria.FormDate是不可为空的。您应该考虑在模板中改进/重构代码。