MVC3单选按钮验证

时间:2012-10-29 14:43:31

标签: c# javascript asp.net-mvc radio-button validation

我对单选按钮和支票有疑问。

首先,在我的观点中,我有一个带登录值的文本框。在这个文本框和提交按钮之间,我有5个单选按钮。这些rb中的每一个都在我的ViewModel中引用了一个属性。

所以这是代码。 我的ViewModel具有以下属性:

public class DeleteUAInfosViewModel
{

    [Display(Name = "UserAccountDeleteInfos", ResourceType = typeof(UserAccountResources))]
    public string UserLeave
    {
        get { return UserAccountResources.UserLeave; }
    }

    [Display(Name = "UserAccountDeleteInfos", ResourceType = typeof(UserAccountResources))]
    public string UserTransfer
    {
        get { return UserAccountResources.UserTransfer; }
    }

    [Display(Name = "UserAccountDeleteInfos", ResourceType = typeof(UserAccountResources))]
    public string UserDetachment
    {
        get { return UserAccountResources.UserDetachment; }
    }

    [Display(Name = "UserAccountDeleteInfos", ResourceType = typeof(UserAccountResources))]
    public string UserRetirement
    {
        get { return UserAccountResources.UserRetirement; }
    }

    [Display(Name = "UserAccountDeleteInfos", ResourceType = typeof(UserAccountResources))]
    public string UserStatus
    {
        get { return UserAccountResources.UserStatus; }
    }
}

我在IndexViewModel中链接DeleteUAInfosViewModel:

public class IndexViewModel
{
        [Display(Name = "DeleteUAInfos", ResourceType = typeof(UserAccountResources))]
        public DeleteUAInfosViewModel DeleteUAInfosGroup { get; set; }

        public IndexViewModel()
        {
            DeleteUAInfosGroup = new DeleteUAInfosViewModel();
        }

        ...
}

我的部分视图与rb的声明:

@model MyPath.UserAccount.DeleteUAInfosViewModel

<div id="UserDeleteInfosField">
    <p>
        @Html.RadioButton("RbDeleteGroup", Model.UserLeave)
        @UserAccountResources.UserLeave
        @Html.HiddenFor(x => x.UserLeave)   
    </p>
    <br />
    <p>
        @Html.RadioButton("RbDeleteGroup", Model.UserTransfer)
        @UserAccountResources.UserTransfer
        @Html.HiddenFor(x => x.UserTransfer)   
    </p>
    <br />
    <p>
        @Html.RadioButton("RbDeleteGroup", Model.UserDetachment)
        @UserAccountResources.UserDetachment
        @Html.HiddenFor(x => x.UserDetachment)   
    </p>
    <br />
    <p>
        @Html.RadioButton("RbDeleteGroup", Model.UserRetirement)
        @UserAccountResources.UserRetirement
        @Html.HiddenFor(x => x.UserRetirement)   
    </p>
    <br />
    <p>
        @Html.RadioButton("RbDeleteGroup", Model.UserStatus)
        @UserAccountResources.UserStatus
        @Html.HiddenFor(x => x.UserStatus)   
    </p>
</div>

我用另一个视图在另一个视图中调用此局部视图:

@Html.Partial("_DeleteUAInfos", Model.DeleteUAInfosGroup)

目前我检查了登录是否为空或是空。

但现在我需要检查单选按钮。 示例:我想验证登录是否正确并且至少检查了一个rb(并检索了该值)。

换句话说:我想整理单选按钮的检查和登录值的检查(在我的情况下,登录部分已经完成)。

那么你可以帮助我吗?

提前致谢!

Ars_n

2 个答案:

答案 0 :(得分:2)

你所做的只是创建一个非常长的布尔表达式,所以在函数中验证你的登录添加

if(!radio1&&!radio2...&&!radion)
{
    ModelState.AddModelError("HTMLModelComponentYouWantToValidate", "ErrorMessage");
}

然后再继续添加

if(ModelState.IsValid){...}
else{ return View();}

答案 1 :(得分:0)

最后,我完全改变了使用Enumerations的方法。 所以,我按照以下步骤操作:

1)在ViewModel中声明公共枚举(其中包含&#34; UserLeave&#34;,&#34; UserTransfer&#34;等等。)

2)使用属性引用枚举(在ViewModel中):public MyEnum myEnum{ get; set; }

3)在视图中调用此枚举:@Html.RadioButtonFor(m => m.myEnum, MyEnum.UserLeave);    对每个单选按钮重复此操作。

4)现在,我可以直接在我的ViewModel中执行检查(单选按钮是否已选中)..

所以我希望它会帮助那些遇到同样问题的人。

此致

Ars_n