为什么我的视图模型上的只读属性在回发后变为空白?

时间:2013-11-27 16:16:24

标签: asp.net-mvc postback asp.net-mvc-viewmodel

这是一个MVC - 剃刀问题。 [环境是MVC 4.0。]我有一个具有一个可编辑属性和一个仅显示属性的视图模型。在我看来,我正在使用@ html.TextBoxFor()方法来编辑可编辑属性。为了显示仅显示属性,我直接使用@ Model.Property。我在Editable属性上有一个服务器端验证,如果Editable属性的发布值无效,我将返回相同的视图,并在视图的验证摘要部分中显示验证错误。现在,问题是 - 在提交可编辑属性的无效值的视图表单后,我看到了editable属性的错误,但是仅显示属性为空。 MVC是否为我的仅显示属性发布BLANK / Nothing?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果要排除视图模型属性,可以使用绑定属性和界面的组合,只需要在服务器上进行模型绑定时要包含的属性。

见这里:http://www.dotnetcurry.com/ShowArticle.aspx?ID=439

答案 1 :(得分:1)

如果您没有在表单字段(输入等等)上保留它,则在发布时它不会是免费的。

使用@Html.HiddenFor方法保留表单中的属性(以及显示它),以便在发布时可用。

@model YourCustomerViewModel
@using(Html.BeginForm())
{
  <span>@Model.EmailAddress</span>
  @Html.TextBoxFor(s=>s.FirstName)

  @Html.HiddenFor(s=>s.EmailAddress)
  <input type="submit" value="Save" />
}