在ASP.NET MVC 4 Beta中,我有一个具有此属性的实体:
[DisplayFormat(DataFormatString = "{0:o}", ApplyFormatInEditMode = true)]
public virtual DateTime SavedAt { get; set; }在使用“Controllerwith读/写操作和视图,使用EntityFramework”模板生成的视图中,我有以下代码来为其创建一个编辑器:
<div class="editor-label">
@Html.LabelFor(model => model.SavedAt)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.SavedAt)
@Html.ValidationMessageFor(model => model.SavedAt)
</div>它产生这个输出:
<div class="editor-label">
<label for="SavedAt">SavedAt</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-date="The field SavedAt must be a date." data-val-required="The SavedAt field is required." id="SavedAt" name="SavedAt" type="text" value="2012-03-31T22:45:18.2244059" />
<span class="field-validation-valid" data-valmsg-for="SavedAt" data-valmsg-replace="true"></span>
</div>注意,日期格式为"2012-03-31T22:45:18.2244059“。
如果我用以下内容替换视图代码片段:
@Html.HiddenFor(model => model.SavedAt)此代码生成如下:
<input data-val="true" data-val-date="The field SavedAt must be a date." data-val-required="The SavedAt field is required." id="SavedAt" name="SavedAt" type="hidden" value="31/03/2012 22:45:18" />请注意,该日期现在格式为"31/03/2012 22:45:18“。
问题是:
是否期望HiddenFor遵守由DisplayFormat属性定义的格式?
如果没有,那么以所需的格式输出隐藏字段的好方法是什么?
发布于 2012-04-03 06:06:37
需要HiddenFor来遵守DisplayFormat属性定义的格式设置吗?
不,没有。只有EditorFor和DisplayFor助手使用DisplayFormat。
如果不是
,那么将隐藏字段以所需的格式输出的好选择是什么?
您不应该真正关心隐藏字段的格式。它是隐藏的,没人看到它。但是,如果出于某种原因需要自定义格式,则可以使用自定义编辑器模板(~/Views/Shared/EditorTemplates/HiddenInput.cshtml)覆盖默认模板:
@if (!ViewData.ModelMetadata.HideSurroundingHtml)
{
@Html.Encode(ViewData.TemplateInfo.FormattedModelValue)
}
@Html.Hidden("", ViewData.TemplateInfo.FormattedModelValue)然后用[HiddenInput]属性装饰视图模型属性,以指示希望将其呈现为隐藏字段:
[DisplayFormat(DataFormatString = "{0:o}", ApplyFormatInEditMode = true)]
[HiddenInput(DisplayValue = false)]
public virtual DateTime SavedAt { get; set; }最后:
@Html.EditorFor(x => x.SavedAt)发布于 2012-08-17 19:50:43
我发现了使用@Html.HiddenFor(model => model.SavedAt)时出现的问题--它将防止您不得不进行回发。
为了避免丢失日期值,我使用TempData,然后在[HttpPost]上重新分配模型值
https://stackoverflow.com/questions/9986050
复制相似问题