2013-09-12 4 views
1

я получил 4 радиокнопки в виду, что я обязывающие их от модели, как это нижене в состоянии проверить кнопку радио выбранное значение в контроллере

@model MVC.Models.DeleteModel 
@using (@Html.BeginForm("Submit", "Delete")) 
{ 

    <div class=".editor-field"> 
     @Html.Label("Delete"); 
    </div> 

    <div class =".editor-field"> 
    @Html.RadioButtonFor(m=>m.IsDeleteByItemChecked,"By Item") 
     @Html.Label("By Item") 
    </div> 
    <div class =".editor-field"> 
    @Html.RadioButtonFor(m=>m.IsDeleteByVendorChecked,"By Vendor") 
     @Html.Label("By Vendor") 

     @Html.RadioButtonFor(m=>m.IsCancelPageChecked,"Cancel Page") 
     @Html.Label("Cancel Page") 
    </div> 
    <div class =".editor-field"> 
    @Html.RadioButtonFor(m=>m.IsDeleteByMemberChecked,"By Member") 
     @Html.Label("By Member") 
    </div> 

    <div class=".editor-field"> 
      <input id="btnSubmitChanges" type="submit" value="Submit" /> 
     </div>  
} 

и это моя модель

public class DeleteModel 
{ 

    public bool IsDeleteByItemChecked { get; set; } 
    public bool IsDeleteByVendorChecked { get; set; } 
    public bool IsDeleteByMemberChecked { get; set; } 
    public bool IsCancelPageChecked { get; set; } 

    [Display(Name = "By Item")] 
    public string ByItem { get; set; } 

    [Display(Name = "By Vendor")] 
    public string ByVendor { get; set; } 

    [Display(Name = "By Member")] 
    public string ByMember { get; set; } 

    [Display(Name = "Cancel Page")] 
    public string CancelPage { get; set; } 

} 

и это мой контроллер

[HttpPost] 
    public ActionResult Submit(DeleteModel deleteModel) 
    { 

     //some coding stuff 

     //here i am checking the radio button for selected one 
     if (deleteModel.IsDeleteByItemChecked) 
     { 

      DeleteItem deleteByItemInsert = new DeleteItem(); 
      deleteByItemInsert.DeleteField = "ITEM"; 
      deleteByItemInsert.DeleteIndicator = char.MinValue; 
      deleteByItemInsert.DeleteValue = itemDTO.ItemID; 
     } 
     if (deleteModel.IsDeleteByMemberChecked) 
     { 
      DeleteItem deleteByMemberInsert = new DeleteItem(); 
      deleteByMemberInsert.DeleteField = "MEMBER"; 
      deleteByMemberInsert.DeleteIndicator = char.MinValue; 
      deleteByMemberInsert.DeleteValue = ""; 
     } 

Проблема заключается в том, если я выбрать first radio button, а затем нажмите submit button его приходит первый, если состояние внутри контроллера, но first if condition дает ложным ....

, как я могу проверить, является ли выбрана кнопка радио или не в стороне контроллера

бы любое одно пожалуйста есть решение для это ...

Другая проблема заключается в том, что я выбираю первую радиокнопку, а затем выбираю вторую радиокнопку, я не могу выбрать первую радиокнопку, как я могу ее исправить ....

ответ

1

Эти две проблемы связаны. Немного изменив свою модель, вы сможете группировать переключатели, чтобы щелкнуть мышью на отмену выбора других, а также проверить выбранное значение.

Во-первых, изменить модель быть:

public class DeleteModel 
{ 

    public string DeleteBy { get; set; } 

    [Display(Name = "By Item")] 
    public string ByItem { get; set; } 

    [Display(Name = "By Vendor")] 
    public string ByVendor { get; set; } 

    [Display(Name = "By Member")] 
    public string ByMember { get; set; } 

    [Display(Name = "Cancel Page")] 
    public string CancelPage { get; set; } 

} 

Первый параметр Html.RadioButtonFor() должно быть имя свойства вы используете, а второй параметр должен быть значение этого конкретного радио кнопка. Затем они будут иметь одно и то же значение атрибута имени, и помощник выберет данный переключатель, если/если он соответствует значению свойства.

Продолжая с изменениями в классе DeleteModel, это сделает вид стать:

<div class =".editor-field"> 
    @Html.RadioButtonFor(m=>m.DeleteBy,"item") 
     @Html.Label("By Item") 
    </div> 
    <div class =".editor-field"> 
    @Html.RadioButtonFor(m=>m.DeleteBy,"vendor") 
     @Html.Label("By Vendor") 

    @Html.RadioButtonFor(m=>m.DeleteBy,"page") 
     @Html.Label("Cancel Page") 
    </div> 
    <div class =".editor-field"> 
    @Html.RadioButtonFor(m=>m.DeleteBy,"member") 
     @Html.Label("By Member") 
    </div> 

, который затем будет проверяться в контроллере так:

if (deleteModel.DeleteBy == "item") 
{ 
    DeleteItem deleteByItemInsert = new DeleteItem(); 
    deleteByItemInsert.DeleteField = "ITEM"; 
    deleteByItemInsert.DeleteIndicator = char.MinValue; 
    deleteByItemInsert.DeleteValue = itemDTO.ItemID; 
} 
if (deleteModel.DeleteBy == "member") 
{ 
    DeleteItem deleteByMemberInsert = new DeleteItem(); 
    deleteByMemberInsert.DeleteField = "MEMBER"; 
    deleteByMemberInsert.DeleteIndicator = char.MinValue; 
    deleteByMemberInsert.DeleteValue = ""; 
} 
Смежные вопросы