DropDownListFor验证不起作用

时间:2017-08-22 14:11:05

标签: javascript c# asp.net-mvc

让我解释一下我的问题。我正在开发一个MVC C#应用程序,它使用这个日历来显示事件 - https://fullcalendar.io/。这些事件是法庭听证会。我的一个过滤器是" judgePanel"。 judgePanel属性是一个字符串(id属性用于" judgePanel" - 该属性存在一些问题,所以最后我们就这样离开了。)

这是我的模特:

[Required(ErrorMessage = "* The field is required.")]  
public string id { get; set; }  

这是我的观点:

<div class="col-md-3">
    @Html.DropDownListFor(x => x.id, Model.JudgePanels, "choose a judgePanel", new { id = "juror-id", @class = "form-control" })           
</div>
@Html.ValidationMessageFor(x => x.id, null, new { @class = "text-danger" })

这是我在EventController中的方法:

public ActionResult GetHearingsForJudgePanel(string id, int? month = null, int? year = null, int? caseNumber = null, int? caseYear = null)
{
    if (!Request.IsAjaxRequest())
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

        int currentMonth;
        int currentYear;
        DateTime currentDate = DateTime.Now;
        EventService service = new EventService();
        IEnumerable<object> data;

        if (id == "")
        {
            id = null;
        }

        string judgePanel = id;

        if (month.HasValue)
            currentMonth = month.Value;
        else
            currentMonth = currentDate.Month;

        if (year.HasValue)
            currentYear = year.Value;
        else
            currentYear = currentDate.Year;

            data = service.GetHearingsForJudgePanel(judgePanel, currentMonth, currentYear, caseNumber, caseYear);

            return Json(data, JsonRequestBehavior.AllowGet);
}

直到昨天,视图中的代码是:

<div class="col-md-3">
    @Html.DropDownListFor(x => x.id, Model.JudgePanels, "all", new { id = "juror-id", @class = "form-control" })           
</div>

因为我有选择&#34;所有&#34;显示所有judPanels。现在我必须删除该选项,只想保留单词:&#34;选择一个judPanel&#34;在下拉列表的顶部,我希望当有人选择它们时,显示验证消息&#34;该字段是必需的&#34;为了提示用户选择一个特定的judgePanel并为了使下拉所需(没有它就不能过滤)。

问题在于,当我选择&#34;选择一个judPanel&#34;并且过滤而不是接收验证消息,我再次看到所有的听证会(对于所有的judPanels)。我调试了控制器方法,当我选择&#34;选择一个judPanel&#34;时,我看到id(judgePanel)参数是空字符串(&#34;&#34;)。从下拉列表。

请帮我收到正常的验证讯息。

这是我在我的观点中放置的javascript文件:

$("#juror-id").chosen();

2 个答案:

答案 0 :(得分:0)

您可以使用javascript / jquery在提交之前进行验证,如果值为空,则字符串触发验证,或者如果ActionResult上的值为null,则返回一个值并使用它来显示您需要的验证

答案 1 :(得分:0)

尝试将模型更改为此?

df.select($"point"(0).as("firstValue")).show