代码之家  ›  专栏  ›  技术社区  ›  oglester

模型未在发布后呈现模型值

  •  0
  • oglester  · 技术社区  · 15 年前

    我有一个ASP.NET MVC页面,其中有一个项目列表…

    //a vague representation
    Model.someValue[0]     Model.someHiddenValue[0] 
    Model.someValue[1]     Model.someHiddenValue[1]
    Model.someValue[2]     Model.someHiddenValue[2]
    

    所有字段都是可选的,但它们确实有一些验证,我正在显示验证消息。

    问题是,当我提交一次并返回原始视图(而不是重定向)时,隐藏字段并没有得到它们的新值,而是它们的新值在传递给视图的视图模型中。

    我认为modelstate可能会重写模型,作为验证的一部分。我知道我可以重定向并绕过这个问题,但是我希望能够保存一部分表单并显示其余的验证错误。如果没有其他解决方案,我只需验证整个表单,并仅在所有项都有效时保存。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Brad Wilson    15 年前

    如果值出现在model state中,它将显示它们,而不是模型中的值,因为它们表示用户提供的“最后”已知状态。

    如果您不打算让用户重新进行编辑,则应该清除modelstate。

        2
  •  0
  •   eu-ge-ne    15 年前

    你试过这个吗?:

    var newValue = new ValueProviderResult("value", "value", System.Globalization.CultureInfo.CurrentUICulture);
    
    ModelState.SetModelValue("someHiddenValue", newValue);