在回发时更改隐藏字段的值

时间:2013-04-04 21:55:45

标签: jquery forms asp.net-mvc-4 submit hidden

我花了一整天时间尝试调试这个,我需要帮助。我正在ASP.Net MVC 4中开发一个JQuery Mobile应用程序。我有一个带有隐藏字段的表单,其值来自模型属性:

@<input type="hidden" id="hdnShowMsg" name="hdnShowMsg" value="@Model.ShowMsg" />

表单提交后,控制器会修改Model.ShowMsg,然后重新显示表单。问题是,当视图到达其javascript(DOM完全加载)时,Model.ShowMsg不显示修改后的值,但仍显示初始值(在帖子之前)。

我发现这是一个可能的解决方案,它几乎完全描述了我的情况,但是清除控制器中的ModelState并不能解决问题:http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

我理解modelstate如何保留表单字段值,以便在出现验证错误时重新显示它们。我也明白,在使用模型之前,视图中的HTML帮助程序将首先使用ModelState。如果我清除模型状态,为什么还有问题?

我在控制器中放置一个断点并验证模型状态已被清除,但是当回发后重新显示视图时,以下javascript代码显示旧值:

<script>
    $(document).ready(function () {
        alert(document.getElementById("hdnShowMsg").value);
    });
</script>

这怎么可能?

以下是表单的html帮助程序:

@Using Html.BeginForm("Index", "NewDocument", Model, FormMethod.Post, New With {.id = "newdocument-form"})

0 个答案:

没有答案