0

叫我疯了,但这似乎是多余的和不必要的,但对于我的生活,我找不到能同时实现这两者的功能。

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 值,因此是 hiddenFor。这当然会在幕后生成一个输入,但我也需要显示它。DisplayFor 和 ValueFor 在我的表单提交中都返回 Id = 0。更具体地说,当我更新表单中的数据时,我想保留这两个值。返回的模型在 0/Datetime year 0 处有它们。

有没有办法为下一个模型保存这些值?

4

1 回答 1

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)
于 2013-07-18T21:23:48.490 回答