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