【问题标题】:@Html.ValidationMessageFor for a bool in ASP.NET MVC 4@Html.ValidationMessageFor 用于 ASP.NET MVC 4 中的布尔值
【发布时间】:2015-02-26 20:58:03
【问题描述】:

我正在尝试为布尔创建下拉列表或单选按钮。问题:您是一名公共执业律师吗?是/否。但是,我需要他们回答问题,如果未选择任何内容,则不要将其默认为 false。如果他们不选择是或否,则提交时的含义会收到一条错误消息,告诉他们回答问题。我对任何可行的事情持开放态度。我还是个新手,所以没什么可进阶的!

我没有成功尝试过 html.dropdownlist、html.dropdownlistfor 和

<select class="form-control" id="PublicPractice" name="PublicPractice">
<option value= null>--Select One--</option> 
<option value="True">Yes</option>
<option value="False">No</option>
</select> 

型号

public bool PublicPractice { get; set; }

查看

@Html.EditorFor(model => model.PublicPractice)
@Html.ValidationMessageFor(model => model.PublicPractice)

【问题讨论】:

    标签: c# asp.net-mvc validation razor


    【解决方案1】:

    不要将 PublicPractice 声明为 bool,而是使用 bool?这将允许一个空值,然后在您的代码中检查该空值..

    【讨论】:

      【解决方案2】:

      一个选项是不允许他们不选择值,您可以通过在 ViewModel 的构造函数中将 PublicPractice 的初始值设置为 false 来做到这一点。

      public ViewModel()
      {
          PublicPractice = false;
      }
      

      然后,在视图上调用 RadioButtonFor:

      @Html.RadioButtonFor(x => x.PublicPractice, true)
      @Html.RadioButtonFor(x => x.PublicPractice, false)
      

      这样做会迫使他们将 PublicPractice 设置为 false 或将其更改为 true,并且不允许他们不给出答案。

      【讨论】:

        【解决方案3】:

        这就是我为使其正常工作所做的。我确信有更好的方法,但这对我有用。

        型号:

        public bool? PublicPractice { get; set; }
        

        控制器:

        //check to see if they answered if they are public practice attorney
                   string pp = Convert.ToString(collection["PublicPractice"]);
                   if (pp == "noAnswer")
                   {
                       TempData["ClassSelected"] = cs;
                       TempData["PPerror"] = "Sorry, but you did not answer...";
                       return RedirectToAction("Register", "ClassList", new { id = cs });
                   }
        

        查看:

        @if (TempData["PPerror"] != null)
            {
                <h3 style="color:red">@TempData["PPerror"]</h3>
            }
        

        这里有更多不适用的代码。

        <select class="form-control" id="PublicPractice" name="PublicPractice">
        <option value= "noAnswer">--Select One--</option> 
        <option value="True">Yes</option>
        <option value="False">No</option>
        </select>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-20
          • 2016-07-03
          相关资源
          最近更新 更多