1

我在页面上有两个表格。其中一个,比如说MainForm@using (Html.BeginForm...用于在提交时调用一个动作,另一个,RadioForm只是由一堆没有提交按钮的无线电组成(它用于触发 的显示MainForm)。如果在服务器端验证期间发生错误,我会从控制器返回视图。这虽然会导致收音机被取消选择。

我在想的是获取选定的值,RadioForm以便我可以在返回后再次设置它。我该怎么做?有没有更好的方法来保持状态RadioForm

4

3 回答 3

2

浏览器不会在提交的表单之外发布任何表单值,因此无法在服务器端执行此操作。一种解决方案是维护一个隐藏字段并在主窗体中使用 jQuery 对其进行更新:

@Html.HiddenFor(m => m.RadioValue, new { @class = "radio-tracker" })

给你的每个单选按钮一个类,比如说,“radio-hidden”并使用以下:

$('.radio-hidden').click(function() {
    $('.radio-tracker').val($(this).val());
});

然后,您可以在窗体的模型上创建一个名为的属性RadioValue,它将绑定到发布时所选单选按钮的值。

然后,当您再次返回视图时,您可以使用此值来预填充单选按钮。

或者,您可以考虑使用 AJAX。

于 2013-09-16T21:05:57.587 回答
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

于 2013-09-16T21:05:41.370 回答
0

您不需要将收音机放在不同的表单上,而是将它们放在提交的表单上。这样,您可以将这些值传递回视图。

于 2013-09-16T20:55:29.103 回答