我在ASP中有Ajax/jQuery回发问题。. NET MVC 3.
- 如果验证对下面的代码失败,则给出预期的结果,表单不发送。
- 如果验证成功,则表单提交时不会命中下面的函数,表单提交并返回一个json文件给浏览器。
如果有人能解释一下,我会很感激的。
我在下面包括了我的部分, 视图和控制器。
<标题>我认为@model TheLayer.EF.NoteAddPartial
@{using (Html.BeginForm("Create", "Note", new { area = "" }, FormMethod.Post, new { id = "noteAdd" }))
{
@Html.TextAreaFor(m => m.Note_Text, new { @class = "note-input" }) //note-input
@Html.ValidationMessageFor(model => model.Note_Text)
<input type="submit" value="Send" />
}}
我的客户端脚本(视图内)
<script type="text/javascript">
$(function () {
$('#noteAdd').submit(function (e) {
e.preventDefault();
if ($(this).valid()) {
alert('posting');
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
error: function (xhr, ajaxOptions, thrownError) {
alert('An error occured when processing this request:rnrn' + thrownError);
},
success: function (result) {
alert(result.s);
}
});
}
return false;
});
});
<标题> 我的控制器public class NoteController : Controller
{
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult Create(NoteAddPartial model)
{
try
{
NoteMethods.CreateLeadNote(model.Note_Text, SessionManager.Current.ActiveUser.Username, model.ItemId, SessionManager.Current.ActiveUser.Company);
return Json(new { s = "Success" });
}
catch (NoPermissionException)
{
return Json(new { s = "No permission" });
}
}
}
<标题>我的部分namespace XX
{
/// <summary>
/// Partial lead person view
/// </summary>
[MetadataType(typeof(NoteAddPartial_Validation))]
public partial class NoteAddPartial
{
public string Note_Text { get; set; }
public int? Source { get; set; }
public string Username { get; set; }
public int ItemId { get; set; }
public int TypeId { get; set; }
}
public class NoteAddPartial_Validation
{
[Required]
public string Note_Text { get; set; }
[HiddenInput(DisplayValue = false)]
public int ItemId { get; set; }
[HiddenInput(DisplayValue = false)]
public int TypeId { get; set; }
}
}
标题>标题>标题>
是否添加了客户端验证库?
jquery.validate.min.js
jquery.validate.unobtrusive.min.js
注意:
如果你配置你的应用程序不使用不引人注目的验证,你就会不需要引用第二个库。
尝试在提交按钮上附加click
事件,并将代码从this
更改为按钮的父窗体的选择器。