我正在使用ASP.NET MVC 4
和jQuery Validate
。
我的页面上有一个文本框和一个按钮。这是一个按钮,不提交按钮。单击该按钮时,我会验证输入到文本框中的数字,并显示2个部分视图中的1个。
这是我的HTML
标记:
@Html.TextBoxFor(x => x.ChangeIncidentNumber)
<button id="verifyButton" type="button">Verify</button>
@Html.ValidationMessageFor(x => x.ChangeIncidentNumber)
在我开始使用jQuery Validate之前,我这样做了:
$(document).ready(function () {
$('#verifyButton').click(function () {
$.ajax(
{
type: "POST",
url: "/Server/GetChangeIncidentDetails",
data: { changeIncidentNumber: $('#ChangeIncidentNumber').val() },
dataType: "html",
success: function (result) {
var domElement = $(result);
$("#changeIncidentDetails").html(domElement);
}
});
});
});
我的GetChangeIncidentDetails
操作方法:
public ActionResult GetChangeIncidentDetails(string changeIncidentNumber)
{
ImplementationType implementationType = GetImplementationType(changeIncidentNumber);
try
{
if (implementationType == ImplementationType.Change)
{
Change change = changeService.FindChangeByNumber(changeIncidentNumber);
if (change != null)
{
ChangeViewModel viewModel = Mapper.Map<ChangeViewModel>(change);
return PartialView("ChangeInformation", viewModel);
}
else
{
// If it is null then I want to display an error message on the front end
}
}
else if (implementationType == ImplementationType.Incident)
{
// Code is almost similar as above
}
else
{
}
}
catch (Exception ex)
{
// Handle error
}
}
在我进入上面的action方法之前,我在图片中添加了jQuery Validate来处理一些客户端验证。这就是我目前所拥有的:
$(document).ready(function () {
$("#searchForm").validate({
rules: {
ChangeIncidentNumber: "required"
},
messages: {
ChangeIncidentNumber: "Required"
}
});
$('#verifyButton').click(function () {
$('#searchForm').valid();
});
});
我不确定如何将2合并在一起,验证和ajax调用是否可以一起完成,是否需要将其分开,如何显示客户端错误消息if change == null
?
答案 0 :(得分:1)
我相信你可以做到:
$('#verifyButton').click(function () {
$('#searchForm').validate();
if($('#searchForm').valid()){
$.ajax({
type: "POST",
url: "/Server/GetChangeIncidentDetails",
data: { changeIncidentNumber: $('#ChangeIncidentNumber').val() },
dataType: "html",
success: function (result) {
var domElement = $(result);
$("#changeIncidentDetails").html(domElement);
}
});
}
});
注意我没有检查语法可能有额外或缺少}或)
要返回错误,您可以从动作方法返回一个类似于
的json对象{success:true/false,
data:"jsondatafromactionmethod",
error:"errormessagehere"}
如果成功,则执行html替换/插入,否则以任何方式显示错误。