我在页面上有两个表单。其中一个,例如MainForm
,正在使用@using (Html.BeginForm...
在提交时调用操作,而另一个RadioForm
只包含一堆没有提交按钮的无线电(它已用于触发MainForm
)的显示。如果在服务器端验证期间发生错误,我将从Controller返回视图。这会导致无线电被取消选择。
我在想的是获取RadioForm
的选定值,以便我可以在返回后再次设置它。我该怎么做?是否有更好的方法来保持RadioForm
的状态?
答案 0 :(得分:2)
浏览器不会在提交的表单之外发布任何表单值,因此无法在服务器端执行此操作。一种解决方案是维护一个隐藏字段,并在主窗体中使用jQuery更新它:
@Html.HiddenFor(m => m.RadioValue, new { @class = "radio-tracker" })
为每个单选按钮添加一类,例如“无线电隐藏”,并使用以下内容:
$('.radio-hidden').click(function() {
$('.radio-tracker').val($(this).val());
});
然后,您可以在主表单的模型RadioValue
上创建一个属性,它将绑定到帖子上所选单选按钮的值。
然后,当您再次返回视图时,可以使用此值预先填充单选按钮。
或者,你可以看一下使用AJAX。
答案 1 :(得分:0)
您需要将无线电放在提交的无线电上,而不是将无线电放在不同的形式上。这样您就可以将这些值传递回视图。
答案 2 :(得分:0)
您可以使用Ajax.BeginForm
方法代替Html.BeginForm
,这样您就可以指定更新目标。这将允许您仅更新提交的表单,而不会影响广播表单。
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result" }))
http://msdn.microsoft.com/en-us/library/system.web.mvc.ajax.ajaxextensions.beginform(v=vs.108).aspx