2011-10-03 4 views
1

나는 ASP.NET MVC에서 아약스/jQuery를 다시 게시에 문제가 있어요 3.이상한 검증 문제 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:\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" }); 
     } 

    } 
} 

내 부분

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

} 
} 
+0

눈에 거슬리지 않는 유효성 검사를 사용할 때 양식 제출을 가로 챌 수 없었습니다. 그게 네가하고 싶은 일이지, 그렇지? 양식이 유효한지 여부에 관계없이 클라이언트 측 javascript에서 'submit' 이벤트를 가로 채고 무언가를하고 싶습니다. 질문을 명확히하면 더 빨리 좋은 답변을 얻을 수 있습니다. – Cymen

답변

1

클라이언트 측 유효성 검사 라이브러리를 추가 했습니까?

jquery.validate.min.js

jquery.validate.unobtrusive.min.js

참고 : 당신은 당신이 작동하지 않을되는 앱 구성한 경우

눈에 띄지 않는 유효성 검사를 사용하면 은 두 번째 라이브러리를 참조 할 필요가 없습니다. 당신의 제출 버튼에 click 이벤트에 부착하고, 버튼의 부모 폼의 선택에 this에서 코드를 변경

+0

나는이 자산들을 모두 가지고있다. – Nick

+0

$ (this) .valid()가 작동해야합니다. 자바 스크립트 오류를 ​​잡으세요? 브라우저가 있는지 확인하십시오. – tugberk

+0

도움이되었습니다. 이들에 대한 참조는 스크립트 관리자와 수동으로 두 곳에서 두 곳에서 제공되었습니다. 다시 한번 감사드립니다. – Nick

0

보십시오.

+0

'this '는 변경할 필요가 없습니다. 그것은 이미 형식입니다. – tugberk