讓我解釋我的問題。我正在使用MVC C#應用程序使用此日曆顯示事件 - https://fullcalendar.io/。這些事件是法庭聽證會。我的一個過濾器是「judgePanel」。 judgePanel
屬性是一個字符串(id屬性是「judgePanel」 - 這個屬性有一些問題,所以最後我們以這種方式離開了它)。DropDownListFor驗證不起作用
這是我的模型:
[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>
因爲我有選項「全部」顯示所有的判斷面板。現在,我必須刪除該選項,並且只想保留下列單詞:在下拉列表頂部選擇「一個判斷面板」,並且當有人選擇它時顯示驗證消息「該字段是必需的」,以便提示用戶選擇一個特定的法官面板,併爲了使下拉所需(不能沒有它過濾)。
問題是,當我選擇「選擇一個判斷面板」和篩選而不是接收驗證消息時,我再次看到所有聽證會(針對所有裁判面板)。我調試了控制器方法,當我從下拉列表中選擇「選擇一個判斷面板」時,我看到id
(judgePanel)參數是空字符串(「」)。
請幫我收到正常的驗證信息。
這裏是我已經把在我看來,我的JavaScript文件:
$("#juror-id").chosen();
您能向我們展示如何將數據填充到JudgePanels? – Win
假設您啓用了客戶端驗證,您顯示的代碼將顯示一條錯誤消息(但是由於您進行ajax調用,您還需要首先測試$('form').valid()')。顯示你的腳本和你用來觸發ajax調用的html元素! –
斯蒂芬Muecke,我已經顯示的代碼不會給出錯誤。問題是,當我從「judgePanel」(這是一個List)的下拉列表中選擇「選擇一個judgePanel」時,控制器方法中的「id」(judgePanel)參數是一個空字符串。這個空變成了如方法中所示的「null」,並且當該空值傳遞給此方法service.GetHearingsForJudgePanel()時,此方法返回所有判斷面板的所有聽覺。我希望從下拉列表中選擇「選擇一個判斷面板」選項時收到驗證消息,但我不知道如何實現它。 –
ppetyr