2014-01-19 2 views
1

$.get을 통해로드 된 부분이있는 뷰가 있습니다. 부분은 다음과 같은 코드가 있습니다 :MVC 4 서버 측 유효성 검사가 표시되지 않습니다

@model MvcApplication1.Models.CmaPartialModel      
@using (Ajax.BeginForm("TestPost", new AjaxOptions { HttpMethod = "Post" })) 
{     

    @Html.ValidationSummary() 
    for(var i = 0; i < Model.DataItemsWithLabels.Count; i++) 
    {      
      @Html.LabelFor(m => m.DataItemsWithLabels[i].DataName,Model.DataItemsWithLabels[i].DataName) 
      @Html.TextBoxFor(m => m.DataItemsWithLabels[i].DataValue) 
      @Html.ValidationMessageFor(m => m.DataItemsWithLabels[i].DataValue,"data value error") 

      @Html.TextBoxFor(m => m.DataItemsWithLabels[i].DataName) 
      @Html.ValidationMessageFor(m => m.DataItemsWithLabels[i].DataName,"data name error") 
    } 

<input type="submit" value="Save" />   
} 

내 컨트롤러 액션은 다음과 같습니다 클라이언트 측 유효성 검사의 측면에서 예상대로

[HttpPost] 
    public ActionResult TestPost(CmaPartialModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      // code removed for quesiton 
     } 
     else 
     { 
      ModelState.AddModelError("E!", "Want to display this!");    
     } 
     return PartialView("Transaction", model);        
    } 

모두가 노력하고 있습니다.

그러나 컨트롤러에 추가 한 오류는 표시되지 않습니다.

내가 뭘 잘못하고 있니?

나는 inlcude하는 컨트롤러 액션을 변경 한

편집 : ViewBag.Error = "error message";

그리고 @ViewBag.Error을 포함하는 partioal보기 -이 중 upating되지 않습니다. AJAX에 문제가 있습니까?

답변

0

그의 도움으로 딘에게의 탁송. 단지 내가 Ajax.BeginForm을 정확하게 사용하고 있지 않다는 것을 분명히하고 싶었습니다. 내보기는 다음과 같이 봤어야 : 양식은 아무것도 업데이트되지 않은

<div id="form"> 
@using (Ajax.BeginForm("TestPost", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "form" ))} 
{ 
    // form stuff here 
} 
<div> 

- 내가 더 UpdateTargetId

0

여기서 첫 번째 매개 변수 AddModelError이 중요합니다. 오류가 적용될 모델의 부분을 결정하는 데 사용됩니다.

을 지정했습니다. 여기에 유효한 C# 식별자가 아닌 것이 포함되어 있으면 모델의 어느 부분에도 매핑되지 않았을 것입니다.

일반적인 오류를 추가하려면 string.Empty을 첫 번째 매개 변수로 사용하십시오. 유효성 검사 요약에 표시되는지 확인해야합니다.

+0

감사 없었다 아니라 오류로. 죄송합니다. 기쁨이 없습니다. 컨트롤러 메서드에서 ViewBag.Property를 설정하고 표시하려고해도 표시되지 않습니다. 디버깅 할 경우 값은 있지만 폼이 업데이트되지 않습니다. 그것이 AJAX 문제인지 궁금하네요. – davy

+0

질문을 업데이트했습니다. – davy

+1

Fiddler에서 응답 내용을 확인할 수 있습니까? POST를 수행 할 때 응답이 포함 된 요소의 내용을 대체하지 않는지 궁금합니다. http://stackoverflow.com/questions/7908357/returning-data-to-a-partial-view –

관련 문제