gpt4 book ai didi

javascript - Asp.Net MVC 3 表单集合在提交后丢失数据

转载 作者:行者123 更新时间:2023-11-29 22:24:37 25 4
gpt4 key购买 nike

我有一个 Asp.Net MVC 3 应用程序,在我点击提交按钮后,我想验证在 formcollection 参数中传递的信息。如果它无效,我返回一个 jSon。但之后我的 formcollection 总是返回空

这发生在 chrome 和 FFox 中..在 IE 中它工作正常

我的看法:

<li id="opc-register" class="section allow">
<div id="checkout-step-register" class="step a-item" style="display: none;">
<form id="co-register-form" action="">
<div id="checkout-register-load">
@Html.Action("OpcRegisterForm", "Checkout")
</div>
</form>
<script type="text/javascript">
Register.init('#co-register-form', '@(storeLocation)checkout/OpcSaveRegister/');
</script>
<div class="buttons" id="register-buttons-container">
<button type="button" class="paymentmethodnextstepbutton" onclick="Register.save()">
<span>@T("Common.Continue")</span>

</button>

<span class="please-wait" id="register-please-wait" style="display: none;">
<img src="@Url.Content("~/Content/Images/ajax_loader_small.gif")"
alt="@T("Common.LoadingNextStep")" title="@T("Common.LoadingNextStep")" />
@T("Common.LoadingNextStep")</span>
</div>
</div>
</li>

我的 Controller

[HttpPost]
public ActionResult OpcSaveRegister(FormCollection form)
{

var registerModel = PrepareRegisterModel();

registerModel.Email = form["Email"];
registerModel.FirstName = form["FirstName"];
...

if (TryValidateModel(registerModel))
{
....
}

//If we got this far, something failed, redisplay form
return Json(new
{
update_section = new UpdateSectionJsonModel()
{
name = "register",
html = RenderPartialViewToString("OpcRegister", registerModel)
},
goto_section = "register"
});
}

最佳答案

不要在带有 MVC 的帖子上使用 FormCollection。使用强类型 ViewModel,其中包含可以在您的帖子表单中提交的所有属性。

例如你可以有这样一个类:

public class RegisterViewModel
{
public string FirstName { get; set; }
public string Email { get; set; }
//...
}

在您看来,您将设置这些属性:

@Html.EditorFor(m => m.FirstName)
@Html.EditorFor(m => m.Email)

然后对于您的 Action,您将拥有

[HttpPost]
public ActionResult OpcSaveRegister(RegisterViewModel registerModel)
{
//...
}

关于javascript - Asp.Net MVC 3 表单集合在提交后丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com