【问题标题】:not able to check the radio button selected value in controller无法检查控制器中的单选按钮选择值
【发布时间】:2013-09-12 20:22:23
【问题描述】:

我有 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 给出错误...。

如何检查侧面控制器中是否选择了单选按钮

有没有人可以解决这个问题...

另一个问题是,如果我选择第一个单选按钮,然后选择第二个单选按钮,我无法取消选择第一个单选按钮,我该如何纠正这个......

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


    【解决方案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() 的第一个参数应该是您正在使用的属性名称,第二个参数应该是该特定单选按钮的值。然后它们将具有相同的 name 属性值,并且当/如果它与属性值匹配时,助手将选择给定的单选按钮。

    继续修改 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 = "";
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 2014-01-12
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多