ASP中Ajax/jQuery回发的奇怪验证问题.asp.net MVC 3



我在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更改为按钮的父窗体的选择器。

最新更新