0

2 개의 부분보기와 이미 페이지에있는 내용으로 구성된보기가 있습니다. 각 뷰에 유효성 검사 요약을 원합니다. 부분 중 하나에 오류가있는 경우 메시지가 모든 유효성 검사 요약에 표시되므로 페이지에 3 번 표시됩니다. 나는 그것을 해결하고 싶다. 각 유효성 검사 요약은 자체 부분보기에 연결됩니다.

나는 온라인으로 비트를 보면서 이런 식으로 할 수있는 방법이 있다는 것을 보았다 : 오류가 특히이 하나되어 있는지

var SecurityQuestionsErrors = ViewData.ModelState.Where(ms => ms.Key == "SecurityQuestions"); 
if (SecurityQuestionsErrors.Count()>0) 
{ 
    @Html.ValidationSummary("", new { @class = "" }) 
} 

그래서 내가 모든 부분보기에이 코드를 것이 .

  catch (FaultException<IncorrectQuestionFault>) 
     { 
      // question is incorect 
      ModelState.AddModelError("SecurityQuestions", Resources.errors.incorrectQuestion); 
     } 

을하지만 오류가있는 ViewModel에서 오는 경우는 나사 키와 메신저를 추가 나던 .. :

오류가 컨트롤러에서 올 때 (내가 열쇠를 내 스스로를 추가 할 수 있습니다, 그것을 잘 작동합니다)

 [Required(ErrorMessageResourceName = "IsRequired", ErrorMessageResourceType = typeof(Resources.errors))] 
    [StringLength(40, MinimumLength = 7, ErrorMessageResourceName = "NotLongEnough", ErrorMessageResourceType = typeof(Resources.errors))] 
    [Display(Order = 0, Name = "question", ResourceType = typeof(Resources.errors))] 
    public string question{ get; set; } 

제 질문은 : 저는 이것을 좋은 방법으로하고 있습니까? ViewModel에서 오는 오류에 키를 추가하는 방법이 있습니까? 다른 방법으로해야합니까?

모든 도움에 감사드립니다 : D이 가정

답변

0

이보기 모델 속성입니다 : 모든 유효성 검사 오류를 가지고 자신의 DIV에 넣어 것

[Required(ErrorMessageResourceName = "IsRequired", ErrorMessageResourceType = typeof(Resources.errors))] 
[StringLength(40, MinimumLength = 7, ErrorMessageResourceName = "NotLongEnough", ErrorMessageResourceType = typeof(Resources.errors))] 
[Display(Order = 0, Name = "question", ResourceType = typeof(Resources.errors))] 
public string question{ get; set; } 

@Html.ValidationSummary(false, "", new { @class = "text-danger" }) 


@Html.LabelFor(x => x.question) 
@Html.EditorFor(x => x.question) 

이 기본적으로

하는 경우 컨트롤러에서 오류를 잡으려고 시도 할 수 있습니다.

if (!ModelState.IsValid) 
{ 
    // the model is invalid 

    //if you are trying to catch different errors here 
    var modelStateErrors = this.ModelState.Values.SelectMany(m => m.Errors); 
    //Now you have all the errors and can give specific messages for a given error 
    ModelState.AddModelError(string.Empty, "Your error goes here"); 
} 
+0

왜냐하면 나는 모든 오류를 각보기마다 같은 위치에두고 각 텍스트 상자 근처에 오류가 없기를 원하기 때문입니다. 오류는 프랑스어지만, 당신은 생각을 얻을 수있을 것 같아요 http://prntscr.com/d4dltg 응용 프로그램의 웹 서비스가 오류를 던지고 있기 때문에 나는 컨트롤러로 돌아갈거야. 그리고 이것은 내가 필요한 곳이다. 그들을 잡으려고 ^^. 뷰 모델은 입력 된 형식의 유효성을 검사하지만 웹 서비스는 데이터 자체의 유효성을 검사합니다. – Helpha

+0

@Helpha 내 업데이트 된 답변으로 인해 성취하려는 것을 해결할 수 있다고 생각합니다. – Robert

관련 문제