2012-10-29 170 views
1

我有一个关于单选按钮和检查的问题。MVC3单选按钮验证

因此,首先,在我的视图部分,我有一个带有登录值的文本框。在这个文本框和提交按钮之间,我有5个单选按钮。这些rb中的每一个引用了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

那么你要做的就是创建本质上一个很长的布尔表达式,所以在功能验证您的登录名添加

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

,然后继续添加之前

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

不过,别忘了给予好评,并批准它是否适合你,一旦你拥有的权限。 – mikeswright49

+0

感谢您的回答。但我有几个问题:1)我的rb是字符串属性,所以我应该怎么做? 2)你如何直接在控制器中调用这些rb? –

+0

所以当你处理这个时,你应该使用表单提交。对于每个这些,使用:@ Html.RadioButtonFor(m => m.UserLeave,wantedvalue)。当你选择收音机并提交表单时,你可以检查每个值中的值,如果它匹配想要的值,那么Boom!它已被检查。 – mikeswright49

0

最后,我完全改变了使用枚举的方式。 所以,我遵循这些步骤:

1)在ViewModel(其中包含“UserLeave”,“UserTransfer”等)公共枚举声明。

2)用参考属性的枚举(在视图模型):public MyEnum myEnum{ get; set; }

3)在查看呼叫该枚举:@Html.RadioButtonFor(m => m.myEnum, MyEnum.UserLeave); 重复此操作为每个单选按钮。

4)现在,我可以直接在我的视图模型进行检查(单选按钮被选中与否)..

所以,我希望它会帮助别人谁了同样的问题..

问候,

Ars_n