Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 下拉列表验证_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 下拉列表验证

C# 下拉列表验证,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,如果我单击submit按钮而没有从DropDownList中选择值,则在我的Create操作中,我的DropDownList上会收到一条验证错误消息 我得到的验证错误是值“”无效。我希望验证错误消息说,状态是必需的取而代之 我在ViewModel的StId属性中添加了必需的validation属性,但这并没有解决问题 客户模型 public class Customer { public int CustId { get; set; } public string Cus

如果我单击submit按钮而没有从DropDownList中选择值,则在我的Create操作中,我的DropDownList上会收到一条验证错误消息

我得到的验证错误是值“”无效。我希望验证错误消息说,状态是必需的取而代之

我在ViewModel的StId属性中添加了必需的validation属性,但这并没有解决问题

客户模型

    public class Customer
{
    public int CustId { get; set; }
    public string CustFirstName { get; set; }
    public string CustLastName { get; set; }

    public int StId { get; set; }
    public State State { get; set; }
}
    public class State
{
    public int StId { get; set; }
    public string StAbbr { get; set; }

    public List<Customer> Customers { get; set; }
}
    public class CustomerFormViewModel
{
    public int CustId { get; set; }

    [Required(ErrorMessage = "First Name is required!")]
    [Display(Name = "First Name")]
    public string CustFirstName { get; set; }

    [Required(ErrorMessage = "Last Name is required!")]
    [Display(Name = "Last Name")]
    public string CustLastName { get; set; }

    [Required(ErrorMessage = "State is required!")]
    [Display(Name = "State")]
    public int StId { get; set; }

    public IEnumerable<State> States { get; set; }
}
    @using (Html.BeginForm("Create", "Customer"))
{
    <div class="form-group">
        @Html.LabelFor(c => c.CustFirstName)
        @Html.TextBoxFor(c => c.CustFirstName, new { @class = "form-control" })
        @Html.ValidationMessageFor(c => c.CustFirstName)
    </div>

    <div class="form-group">
        @Html.LabelFor(c => c.CustLastName)
        @Html.TextBoxFor(c => c.CustLastName, new { @class = "form-control" })
        @Html.ValidationMessageFor(c => c.CustLastName)
    </div>

    <div class="form-group">
        @Html.LabelFor(s => s.StId)
        @Html.DropDownListFor(s => s.StId, new SelectList(Model.States, "StId", "StAbbr"), "", new { @class="form-control"})
        @Html.ValidationMessageFor(s => s.StId)
    </div>

    <div class="form-group">
        <button type="submit" class="btn btn-primary">Submit</button>
    </div>
}
状态模型

    public class Customer
{
    public int CustId { get; set; }
    public string CustFirstName { get; set; }
    public string CustLastName { get; set; }

    public int StId { get; set; }
    public State State { get; set; }
}
    public class State
{
    public int StId { get; set; }
    public string StAbbr { get; set; }

    public List<Customer> Customers { get; set; }
}
    public class CustomerFormViewModel
{
    public int CustId { get; set; }

    [Required(ErrorMessage = "First Name is required!")]
    [Display(Name = "First Name")]
    public string CustFirstName { get; set; }

    [Required(ErrorMessage = "Last Name is required!")]
    [Display(Name = "Last Name")]
    public string CustLastName { get; set; }

    [Required(ErrorMessage = "State is required!")]
    [Display(Name = "State")]
    public int StId { get; set; }

    public IEnumerable<State> States { get; set; }
}
    @using (Html.BeginForm("Create", "Customer"))
{
    <div class="form-group">
        @Html.LabelFor(c => c.CustFirstName)
        @Html.TextBoxFor(c => c.CustFirstName, new { @class = "form-control" })
        @Html.ValidationMessageFor(c => c.CustFirstName)
    </div>

    <div class="form-group">
        @Html.LabelFor(c => c.CustLastName)
        @Html.TextBoxFor(c => c.CustLastName, new { @class = "form-control" })
        @Html.ValidationMessageFor(c => c.CustLastName)
    </div>

    <div class="form-group">
        @Html.LabelFor(s => s.StId)
        @Html.DropDownListFor(s => s.StId, new SelectList(Model.States, "StId", "StAbbr"), "", new { @class="form-control"})
        @Html.ValidationMessageFor(s => s.StId)
    </div>

    <div class="form-group">
        <button type="submit" class="btn btn-primary">Submit</button>
    </div>
}
创建.chtml

    public class Customer
{
    public int CustId { get; set; }
    public string CustFirstName { get; set; }
    public string CustLastName { get; set; }

    public int StId { get; set; }
    public State State { get; set; }
}
    public class State
{
    public int StId { get; set; }
    public string StAbbr { get; set; }

    public List<Customer> Customers { get; set; }
}
    public class CustomerFormViewModel
{
    public int CustId { get; set; }

    [Required(ErrorMessage = "First Name is required!")]
    [Display(Name = "First Name")]
    public string CustFirstName { get; set; }

    [Required(ErrorMessage = "Last Name is required!")]
    [Display(Name = "Last Name")]
    public string CustLastName { get; set; }

    [Required(ErrorMessage = "State is required!")]
    [Display(Name = "State")]
    public int StId { get; set; }

    public IEnumerable<State> States { get; set; }
}
    @using (Html.BeginForm("Create", "Customer"))
{
    <div class="form-group">
        @Html.LabelFor(c => c.CustFirstName)
        @Html.TextBoxFor(c => c.CustFirstName, new { @class = "form-control" })
        @Html.ValidationMessageFor(c => c.CustFirstName)
    </div>

    <div class="form-group">
        @Html.LabelFor(c => c.CustLastName)
        @Html.TextBoxFor(c => c.CustLastName, new { @class = "form-control" })
        @Html.ValidationMessageFor(c => c.CustLastName)
    </div>

    <div class="form-group">
        @Html.LabelFor(s => s.StId)
        @Html.DropDownListFor(s => s.StId, new SelectList(Model.States, "StId", "StAbbr"), "", new { @class="form-control"})
        @Html.ValidationMessageFor(s => s.StId)
    </div>

    <div class="form-group">
        <button type="submit" class="btn btn-primary">Submit</button>
    </div>
}
@使用(Html.BeginForm(“创建”、“客户”))
{
@LabelFor(c=>c.CustFirstName)
@TextBoxFor(c=>c.CustFirstName,新的{@class=“form control”})
@Html.ValidationMessageFor(c=>c.CustFirstName)
@LabelFor(c=>c.CustLastName)
@TextBoxFor(c=>c.CustLastName,new{@class=“form control”})
@Html.ValidationMessageFor(c=>c.CustLastName)
@LabelFor(s=>s.StId)
@DropDownListFor(s=>s.StId,new SelectList(Model.States,“StId”,“stirr”),“”,new{@class=“form control”})
@Html.ValidationMessageFor(s=>s.StId)
提交
}

在web.config中添加此行

<appSettings>
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

在布局页面中包括以下jquery文件

<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>


如果需要任何验证,使用此按钮,您的提交按钮单击事件不会进入您视图的[HttpPost]操作。

请在cshtml文件中包含jquery.validate.js和jquery.validate.unobtrusive.js

<script src="~/lib/jquery-validation/dist/jquery.validate.js"></scri‌​pt>     
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.uno‌​btrusive.js"></scrip‌​t>


您显示的代码将显示状态为必填@Stephen Muecke,你可能会想,因为我添加了
[Required(ErrorMessage=“State is Required!”)]
,但它只显示值“”,这是无效的(我刚刚测试过),所以您没有向我们展示它。另外,在
else
块中,它应该是
vm.States=_context.States.ToList();返回视图(vm)(无需初始化新视图模型-只需返回您发布的视图模型即可。我使用Chrome Developer工具检查了DropDownList,结果显示,
PA OH WV
值“”无效。
您做得很好。请在cshtml文件中包含jquery.validate.js和jquery.validate.unobtrusive.jsng这样运行项目,在浏览器中按Ctrl+Shift+I(右键单击并打开inspect元素),然后在“源”选项卡中检查加载的jquery文件。更改的web.config文件很重要。您必须更改根文件夹web.config文件,而不是视图文件夹中的文件(仅适用于该文件夹)。这并没有回答这个问题,它只是显示了如何包含客户端验证的脚本(这是一个好主意),但没有解决OP的声明(由于OP显示的代码没有添加该错误,因此无论如何都无法回答)@最近单击,我只有一个web.config文件,它位于我的应用程序的根目录中。此外,我使用的ASP.NET MVC核心不包括“脚本”文件夹。此外,当您打开web.config文件时,建议将应用程序设置放置在appsettings.json文件中。我仍然按照您的建议使用web.config并将
标记与create.cshtml页面一起添加到布局页面,但仍然没有成功。