问题描述
我正在尝试使用ajax调用来调用控制器操作方法,但是客户端和服务器端验证似乎不起作用。 当我不使用ajax调用时,可以进行验证工作,但不能使用这种方法。 请问有人可以帮助我解决这个问题吗?
@model iSolve.Models.Configuration.Productsviewmodel
@{
ViewData["Title"] = "runcase";
}
<h1>runcase</h1>
<div class="container-fluid pt-1">
<div class="col-lg-12">
@using (Html.BeginForm("runcase","CallService",FormMethod.Post,new { @class = "container-fluid pt-1",id = "Runform" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="row">
<div class="col-sm-6">
<form class="form-horizontal">
<!--Drop down list (Multi selection is allowed)-->
<fieldset class="form-group">
<label for="formGroupInputLarge1" class="col-sm-7 control-label">Products</label>
<div class="col-sm-7">
@Html.ListBoxFor(m => m.ProductId,(MultiSelectList)ViewBag.productinfo,new { multiple = "multiple",@class = "form-control",id = "productlist" })
@Html.ValidationMessageFor(m => m.ProductId,"",new { @class = "text-danger" })
</div>
</fieldset>
<fieldset class="form-group">
<label for="" class="col-sm-5 control-label ">Enter Run Number</label>
<div class="col-sm-7">
@Html.TextBoxFor(m => m.RunNumber,new { @class = "form-control",id = "runnum" })<!-- It should not be editable while process is running-->
@Html.ValidationMessageFor(m => m.RunNumber,new { @class = "text-danger" })
</div>
</fieldset>
<button type="button" class="btn btn-outline-primary" id="btnstart" name="buttonstart" value="start"><span>Start Run</span></button>
<button type="button" class="btn btn-outline-primary" id="btnstop" name="buttonstop" value="stop">Stop Run</button>
@Html.ActionLink("Export to CSV","Exporttocsv","CallService")
</form>
</div>
</div>
}
</div>
</div>
@section scripts{
<script type="text/javascript">
$(document).ready(function () {
$("#btnstart").click(function (e) {
let productvals = $("#productlist").val();
let runnumber = $("#runnum").val();
let btnval = $("#btnstart").val();
e.preventDefault();
$.ajax({
url: "@Url.Action("CheckRunnumber","Validation")",type: "POST",dataType: "json",data: { runnumber: $('#runnum').val() },success: function (data) {
if (data.success == "True") {
console.log(data);
console.log(data.btnstartval);
//$("#Runform").submit();
$.ajax({
url: "@Url.Action("runcase","CallService")",data: { products: productvals,runnumber: runnumber,button: data.btnstartval }
});
}
else {
e.preventDefault();
console.log(data);
console.log(data.btnstartval);
if (confirm("Run number you have entered is already exist.Do you wish to Rerun?")) {
console.log(data.btnstartval);
$.ajax({
url: "@Url.Action("runcase",button: data.btnstartval }
});
} else {
e.preventDefault();
}
}
},error: function (data) {
}
});
});
</script>
}
下面是viewmodel类。如大家所见,我已将数据注释应用于属性。
public class Productsviewmodel
{
[required(ErrorMessage = "Please select at least one Product")]
public List<string> ProductId { get; set; }
[required(ErrorMessage = "Please enter a run number")]
[MaxLength(8)]
[RegularExpression("^[0-9]*$",ErrorMessage = "Run number must be numeric only")]
public string RunNumber { get; set; }
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)