C# MVC引导表单控件DropDownList for validation错误消息未显示

C# MVC引导表单控件DropDownList for validation错误消息未显示,c#,asp.net-mvc,twitter-bootstrap,razor,C#,Asp.net Mvc,Twitter Bootstrap,Razor,我正在使用MVC5,无法通过Bootsrap3获取DropDownList的MVC验证消息。我在stackoverflow上研究过类似的问题,但任何解决方案都适合我 我想从下拉列表中选择用户选项。如果他单击“提交”按钮,但未选择任何选项,他将收到验证错误消息。最初第一次加载页面时,选择的任何选项都是值为null的选项 型号: 控制器 当您在浏览器中打开它时,是否检查了包含错误的类?这可能是css问题。你是指Razor生成的html源代码:-Wybierz模型-好的,我已经找到了底部描述的问题所在

我正在使用MVC5,无法通过Bootsrap3获取DropDownList的MVC验证消息。我在stackoverflow上研究过类似的问题,但任何解决方案都适合我

我想从下拉列表中选择用户选项。如果他单击“提交”按钮,但未选择任何选项,他将收到验证错误消息。最初第一次加载页面时,选择的任何选项都是值为null的选项

型号:

控制器


当您在浏览器中打开它时,是否检查了包含错误的类?这可能是css问题。你是指Razor生成的html源代码:-Wybierz模型-好的,我已经找到了底部描述的问题所在。但我仍然不知道这是错误的原因以及如何修复它。1您的布局包括重复的脚本删除前两个2$.html Wybierz Wersję-;不添加具有空值的选项-它需要是“`$.val.html-Wybierz-Wersję-”`3.如果form.Valid{$.post..{..};}
public class CarsPriceSearchViewModel
{
    [Required(ErrorMessage = "Proszę wybrać markę"), Range(1, Int32.MaxValue)]
    [Display(Name = "Marka")]
    public int SelectedBrandId { get; set; }
    public SelectList Brands { get; set;}

    [Required(ErrorMessage = "Proszę wybrać model"), Range(1, Int32.MaxValue)]
    [Display(Name = "Model")]
    public int SelectedModelId { get; set; }
}
public ActionResult Index()
{
    oSelectList  = new List<SelectListItem>() {
                new SelectListItem(){ Value="1", Text="Audi"},
                new SelectListItem(){ Value="2", Text="BMW"}
    };
    oSearchViewModel.Brands = new SelectList(oSelectList, "Value", "Text");
    return View(oSearchViewModel);
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Search(CarsPriceSearchViewModel searchOptions)
{
    if (ModelState.IsValid)
    {
        //TO sth
    }

    return View(searchOptions);
}
<div class="panel-body">
    @using (Html.BeginForm("Search", "Home", FormMethod.Post, new { id = "SearchCarsOffersForm" }))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        <div class="row">
            <div class="col-lg-2">
                <div class="form-group">
                    @Html.LabelFor(m => m.SelectedBrandId)
                    @Html.DropDownListFor(m => m.SelectedBrandId,
                        Model.Brands,
                        "--Wybierz-Markę--",
                        new { @class = "form-control" })
                    @Html.ValidationMessageFor(m => m.SelectedBrandId, "", new { @class = "text-danger" })
                </div>
            </div>
            <div class="col-lg-2">
                <div class="form-group">
                    @Html.LabelFor(m => m.SelectedModelId)
                    @Html.DropDownListFor(m => m.SelectedModelId,
                         new SelectList(Enumerable.Empty<SelectListItem>(), "ModelId", "ModelName"),
                         "--Wybierz-Model--",
                         new { @class = "form-control" })
                    @Html.ValidationMessageFor(m => m.SelectedModelId, "", new { @class = "text-danger" })
                </div>
            </div>

        </div>

        <div class="panel-footer">
            <button type="submit" id="SearchCarsOffers" class="btn btn-outline btn-primary btn-lg btn-block">
                Szukaj
            </button>
        </div>
    }
</div>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="/Scripts/jquery-1.10.2.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
$("#SelectedBrandId").change(function (event) {
        $.ajax({
            url: "UsedCarsPriceChart/FillBrandModels/",
            data: { id: $(this).val() /* add other additional parameters */ },
            cache: false,
            type: "POST",
            dataType: "JSON",

            success: function (models) {
                $("#SelectedModelId").html(""); // clear before appending new list

                $("#SelectedModelId").append(
                    $('<option></option>').html("--Wybierz-Model--"));
                for (var i = 0; i < models.length; i++) {
                    var model = models[i];
                    $("#SelectedModelId").append(                        
                        $('<option></option>').val(model.ModelId).html(model.ModelName));
                }
                //The same statement as above
                //$.each(models, function (i, model) {
                //    $("#SelectedModelId").append(
                //        $('<option></option>').val(model.ModelId).html(model.ModelName));
                //});

                $("#VersionModelId").html(""); // clear before appending new list
                $("#VersionModelId").append(
                    $('<option></option>').html("--Wybierz-Wersję--"));
            }
        });
    });

    $("#SelectedModelId").change(function (event) {
        $.ajax({
            url: "UsedCarsPriceChart/FillVersionModel/",
            data: { id: $(this).val() },
            cache: false,
            type: "POST",
            dataType: "JSON",

            success: function (models) {
                $("#VersionModelId").html(""); // clear before appending new list

                $("#VersionModelId").append(
                    $('<option></option>').html("--Wybierz-Wersję--"));
                $.each(models, function (i, model) {
                    $("#VersionModelId").append(
                        $('<option></option>').val(model.VersionModelId).html(model.VersionModelName));
                });
            }
        });
    });