C# @ASP.NET MVC 4中bool的Html.validationMessage

C# @ASP.NET MVC 4中bool的Html.validationMessage,c#,asp.net-mvc,validation,razor,C#,Asp.net Mvc,Validation,Razor,我正在尝试为bool创建一个下拉列表或单选按钮。问题:你是公共执业律师吗?是/否。但是,我需要他们回答问题,如果未选择任何内容,则不会将其默认为false。意思是提交时,如果他们没有选择是或否,他们会收到一条错误消息,告诉他们回答问题。我对任何有用的东西都持开放态度。我还是一个新手,所以没什么要进阶的 我尝试了html.dropdownlist、html.dropdownlistfor和 <select class="form-control" id="PublicPractice" na

我正在尝试为bool创建一个下拉列表或单选按钮。问题:你是公共执业律师吗?是/否。但是,我需要他们回答问题,如果未选择任何内容,则不会将其默认为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> 
看法


使用bool而不是将公共实践声明为bool?这将允许空值,然后在代码中检查该空值。

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

public ViewModel()
{
    PublicPractice = false;
}
然后,在视图上调用RadioButton:

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

这样做会迫使他们要么将公共实践视为虚假,要么将其更改为真实,并且不允许他们不给出答案。

这就是我所做的,让它发挥作用。我确信有更好的方法,但这对我来说很有效

型号:

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)
{
@TempData[“perpror”]
}
这里有更多不适用的代码

<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>

--选择一个--
对
不
//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>