1
当点击一个按钮时,我正在用ajax调用web api。根据我的视图模型数据注释,我的表单使用JqueryVal进行表单验证。ajax mvc html:jquery val无法阻止对api的呼叫
我的问题是,当我在窗体中单击按钮“LISTO”,它会调用我的API,jqueryval的inspite被标记(需要选择一个文件)错误
这是我的代码:
我的视图模型包含数据的注释(该dataannotations与jquery.validate.js
和jquery.validate.unobtrusive.js
一起作为你℃。一看,它是工作,但没有阻止该API被调用):
public class CursoViewModel
{
public Guid Id { get; set; }
[MaxLength(125)]
public string Titulo { get; set; }
[Required]
public string Descripcion { get; set; }
[Required(ErrorMessage ="selecciona una imagen para tu curso")]
[DataType(DataType.Upload)]
public HttpPostedFileBase Imagen { get; set; }
}
类贴到我的API
public class person
{
public string name { get; set; }
public string surname { get; set; }
}
的API代码
[HttpPut]
[Route("api/ProfesorCurso/test")]
public string Put(person p)
{
return p.name + p.surname;
}
我见
@model project.ViewModels.CourseViewModel
<form id="Editcurso" method="post" action="#">
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "Please fix the following errors.")
<div class="container">
<div class="form-group">
@Html.LabelFor(c=>c.Titulo)
@Html.TextBoxFor(c => c.Titulo, new {id="titulo", @class="form-control"})
@Html.ValidationMessageFor(m => m.Titulo)
</div>
<div class="form-group">
@Html.LabelFor(c => c.Descripcion)
@Html.TextAreaFor(c => c.Descripcion, new {id="descripcion", @class = "form-control" })
@Html.ValidationMessageFor(m => m.Descripcion)
</div>
<div class="thumbnail" id="imagencurso"></div>
<div class="form-group">
@Html.LabelFor(m => m.Imagen)
@Html.TextBoxFor(m => m.Imagen, new {id="imagen" ,type = "file", data_rule_validCustomer = "true" })
@Html.ValidationMessageFor(m => m.Imagen)
</div>
<button id="submiter" type="submit" class="btn btn-primary">Listo!</button>
</div>
</form>
视图中的脚本
@section scripts
{
@Scripts.Render("~/bundles/jqueryval")
<script>
$(document).ready(function() {
$("#submiter").click(function() {
jQuery.support.cors = true;
var person = new Object();
person.name = "Sourav";
person.surname = "Kayal";
$.ajax({
url: '/api/ProfesorCurso/test',
type: 'PUT',
dataType: 'json',
data: person,
success: function (data) {
console.log(data);
return false;
},
error: function (x, y, z) {
alert('error al postear');
return false;
}
});
});
});
</script>
}
如何防止ajax在单击我的表单按钮时调用我的api,如果有jquery验证错误?
感谢
哇添加
id
属性!这太好了!经过两天的尝试和尝试,我得到它的工作! 谢谢 –很高兴,但我对你实际在这里做的事情感到有点困惑 - 你的观点是基于'CourseViewModel',但是你发布'person'的数据 - 你在哪里提交'CourseViewModel'的数据? –
我以人为例来简化我的调试。我这样做是因为我无法使用AJAX正确调用我的api。 其实我不是以“正常”的方式发回任何东西(意思是我回发给mvc控制器),我只是使用ajax来更新或发布到我的后端。 –