2012-10-29 174 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