MVC 2 - 两个单选按钮组保持状态

时间:2010-09-16 12:07:49

标签: asp.net-mvc-2 radio-button

我的局部视图中有两个单选按钮组,根据两个选项,我必须操作“扩展区(div)”。要求是默认情况下将单选按钮组默认为第一个,并显示与其相关的扩展区。问题是当存在验证错误时我无法保持单选按钮组。它变为默认值,因为我在客户端处理它。关于如何修复它的任何想法都将非常感激。

谢谢, 拉加

1 个答案:

答案 0 :(得分:1)

您是使用MVC的ValidationMessage帮助程序验证客户端还是在控制器中验证?如果您发布页面并在控制器上使用ModelState.IsValid进行验证,请确保返回具有相同实体的View。 如果您在客户端进行验证,是否可以为单选按钮发布一些示例HTML代码?

您是使用JQuery / Javascript在客户端设置document.ready(...)或load(...)的默认单选按钮设置吗?否则我已经测试了以下内容,它工作正常并且单选按钮状态持续存在:

<强>型号:

 public class MyModel
    {
        [Required(ErrorMessage="Name is required")]
        public string Name { get; set; }
        public bool IsSelected { get; set; }
    }

查看:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<TestSample.Models.MyModel>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Home Page
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<%Html.BeginForm(); %>
<%Html.EnableClientValidation(); %>
        <p>
        <%=Html.RadioButtonFor(m=>m.IsSelected,"true") %>
        <%=Html.RadioButtonFor(m=>m.IsSelected,"false") %>
        <%=Html.TextBoxFor(m => m.Name) %>
        <%=Html.ValidationMessageFor(m => m.Name, "Required") %>
        <input type="submit" id="btnSubmit" name="name" value="Submit" />
        </p>
<%Html.EndForm(); %>
    <script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
      </asp:Content>

<强>控制器:

[HttpPost]
public ActionResult Index(MyModel model)
  {
       if (ModelState.IsValid)
       {//Your code goes here }
       return View(model);
  }