Странные проблемы проверки с обратной передачей Ajax / jQuery в ASP.NET MVC 3 - PullRequest
1 голос
/ 03 октября 2011

У меня проблемы с обратной передачей Ajax / jQuery в ASP.NET MVC 3.

  • Если проверка завершится неудачно в приведенном ниже коде, будет получен ожидаемый результат, а форма не будет опубликована.
  • Если проверка завершается успешно , приведенная ниже функция не срабатывает при отправке формы, а форма отправляет и возвращает файл json в браузер.

Если бы кто-нибудь мог пролить свет на это, я был бы признателен.

Я включил мой частичный , вид и контроллер ниже.

My View

@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:\r\n\r\n' + 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" }); 
        }

    }
}

My Partial

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; }

}
}

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Вы добавили библиотеки проверки на стороне клиента?

jquery.validate.min.js

jquery.validate.unobtrusive.min.js

ПРИМЕЧАНИЕ:

Если вы настроили ваше приложение не работать с ненавязчивой проверкой, вам не нужно ссылаться на вторую библиотеку.

0 голосов
/ 03 октября 2011

Попробуйте присоединиться к событию click на кнопке отправки и измените код с this на селектор для родительской формы для кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...