我第一次使用基因敲除,而我正在努力解決問題。MVC基因敲除驗證顯示和
我有一個包含多個部分的頁面,希望能夠編輯一個部分並提交給控制器,然後顯示保存的詳細信息。
每個部分是包含顯示信息和表單的局部視圖。它們根據需要顯示和隱藏。我的代碼工作提交,但問題是當ModelState無效。我需要返回到顯示驗證消息的表單
如何在服務器驗證失敗時再次顯示錶單?當驗證失敗時,它當前返回到顯示部分。
另外我注意到驗證消息不顯示。
我相信這肯定是一個簡單修復的常見問題。我知道有基因敲除驗證工具,但後來需要做更復雜的業務邏輯驗證,並需要使這項技術發揮作用。
視圖模型:
[Required]
public DateTime? InterviewDate { get; set; }
查看:
<div data-bind="if: showAdminInterviewDisplay" id="Display">
<div>
<button data-bind="click: showInterviewForm" id="EditButton">Edit</button>
</div>
<div>
@Html.Label("Inteview Date") :
<label data-bind="text: interviewDate"></label>
</div>
</div>
<div data-bind="if: showAdminInterviewForm" id="Form">
<div>
@Html.Label("Interview Date")
<input data-bind="value: interviewDate" id="interviewDatePicker" />
@Html.ValidationMessageFor(m => m.InterviewDate)
</div>
<div>
<button data-bind="click: saveInterviewDate">Submit</button>
</div>
淘汰賽視圖模型:
function InterviewViewModel() {
//Data
var self = this;
var jsonDate = @Html.Raw(Json.Encode(@Model.InterviewDate));
var date = new Date(parseInt(jsonDate.substr(6)));
self.interviewDate = ko.observable(dateFormat(date, "dd/mm/yyyy"));
self.showAdminInterviewDisplay = ko.observable(true);
self.showAdminInterviewForm = ko.observable();
self.showInterviewForm = function() {
self.showAdminInterviewDisplay(false);
self.showAdminInterviewForm(true);
$("#interviewDatePicker").datepicker({dateFormat: 'dd/mm/yy'});
};
//Operations
self.saveInterviewDate = function() {
$.ajax("@Url.Action("SaveInterview")", {
data: ko.toJSON(self),
type: "post",
contentType: "application/json",
success: function(data) {
self.showAdminInterviewDisplay(true);
self.showAdminInterviewForm(false);
}
});
};
};
ko.applyBindings(new InterviewViewModel());
控制器:
public ActionResult SaveInterview(KnockoutViewModel model)
{
if (ModelState.IsValid)
{
return Json(model);
}
return PartialView("_AdminInterview", model);
}