我正在使用EditorTemplate本地化显示DateTimeOffset。
EditorTemplate:
@model DateTimeOffset?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToLocalTime()
.ToString("yyyy-MM-dd HH:mm") : string.Empty), new
{
@class = "form-control datetimepicker"
})
当我使用Html.EditorFor时,这是正常的。但是,我想将其他 htmlAttributes传递给我视图中的对象。
查看:
@Html.EditorFor(model => model.ValidToDate, new {
htmlAttributes = new { @data_date_min_date = DateTime.Now.ToString() }
})
此示例中的属性(data_date_min_date)未呈现。如何为特定视图的字段提供其他htmlAttribute?
答案 0 :(得分:0)
您正在通过ViewData字典传递此附加数据。 Html.EditorFor
overload的@Html.EditorFor(model => model.ValidToDate,
new { data_date_min_date = DateTime.Now.ToString()})
参数采用将合并到视图数据字典的匿名对象。因此,您可以从编辑器模板/部分视图中的查看数据字典中读取它
@model DateTimeOffset?
<h4>Value passed from main view : @ViewData["data_date_min_date"]</h4>
@Html.TextBox("", (Model.HasValue ? Model.Value.ToLocalTime()
.ToString("yyyy-MM-dd HH:mm") : string.Empty), new
{
@class = "form-control datetimepicker"
})
并在您的编辑器模板中
def main():
print('hello world')
if __name__ == '__main__':
main()
答案 1 :(得分:0)
作为我问题的完整答案:
视图中定义的 htmlAttributes
将传递到ViewData["htmlAttributes"]
对象中的EditorTemplate。你可以直接将它传递给Html.TextBox
,或者像我一样提供额外的htmlAttributes:
@model DateTimeOffset?
@{
RouteValueDictionary htmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(ViewData["htmlAttributes"]);
string additionalHtmlAttributes = "form-control datetimepicker";
if (htmlAttributes.ContainsKey("class"))
{
htmlAttributes["class"] = String.Format("{0} {1}", htmlAttributes["class"], additionalHtmlAttributes);
}else
{
htmlAttributes.Add("class", additionalHtmlAttributes);
}
}
@Html.TextBox("", (Model.HasValue ? Model.Value.ToLocalTime().ToString("yyyy-MM-dd HH:mm") : string.Empty), htmlAttributes)