叫我疯了,但这看起来非常多余和不必要,但对于我的生活,我找不到能够实现两者的功能。
using Html.BeginForm("Save, Home") {
@Html.DisplayFor(x => x.Id)
@Html.HiddenFor(x => x.Id)
@Html.DisplayFor(x => x.CreatedDate)
@Html.HiddenFor(x => x.CreatedDate)
//Useful fields below
}
让我解释一下 - 我想保存CreatedDate和Id值,因此隐藏了。这当然会在幕后产生输入,但我也需要显示它。 DisplayFor和ValueFor都在表单提交时返回Id = 0。更具体地说,当我更新表单中的数据时,我想保留这两个值。返回的模型将它们设置为0 / Datetime 0年。
有没有办法为下一个模型保存这些值?
答案 0 :(得分:2)
您可以创建一个扩展方法:
public static class HtmlHelperExtensions
{
public static IHtmlString DisplayAndHiddenFor<TModel, TProperty>(
this HtmlHelper<TModel> helper,
Func<TModel, TProperty> propertyAccessor)
{
return new HtmlString(
helper.DisplayFor(propertyAccessor).ToHtmlString()
+ helper.HiddenFor(propertyAccessor).ToHtmlString());
}
}
像这样使用(当然使用正确的using
):
@Html.DisplayAndHiddenFor(x => x.Id)
@Html.DisplayAndHiddenFor(x => x.CreatedDate)