2013-11-09 3 views
1

내보기 모델에 적용 할 사용자 지정 유효성 검사 특성을 만들었습니다. 내 양식에는 @Html.ValidationSummary 컨트롤이 있습니다. 내 사용자 지정 유효성 검사 특성이 유효하지 않은 경우 요약 컨트롤에 어떤 이유로 오류 메시지가 표시되지 않습니다. 내 사용자 지정 유효성 검사기 속성이 적용과Html.ValidationSummary에 사용자 지정 유효성 검사 오류 메시지가 표시되지 않습니다.

public class UserFolderExistsAttribute : ValidationAttribute 
{ 
    private const string _defaultErrorMessage = 
     "A folder with this name already exists"; 
    private readonly object _typeId = new object(); 

    public UserFolderExistsAttribute(string folderName) : 
     base(_defaultErrorMessage) 
    { 
     FolderName = folderName; 
    } 

    public string FolderName { get; private set; } 
    public override object TypeId { get { return _typeId; } } 

    public override bool IsValid(object value) 
    { 
     return false; // return error message to test for now 
    } 
} 

여기, 내보기 모델입니다 : 여기

@using (Ajax.BeginForm("Create", "Folders", 
    new AjaxOptions { OnSuccess = "OnSuccess" })) 
{ 
    @Html.AntiForgeryToken() 

    @Html.TextBoxFor(m => m.Name, new { placeholder = "Name" }) 

    <p>@Html.ValidationSummary()</p> 

    <p><input type="submit" class="create" value="" /></p> 
} 

는 방법이다 :

가 여기 내 부분보기의
[UserFolderExists("Name")] 
public class UserFolderViewModel 
{ 
    [Required(ErrorMessage = "Name is required")] 
    public string Name { get; set; } 
} 

여기 내 사용자 지정 유효성 검사기입니다 내 양식이 다음 주소로 게시 중입니다 :

[HttpPost] 
public JsonResult Create(UserFolderViewModel viewModel) 
{ 
    if (ModelState.IsValid) 
    { 
     // do something 
    } 

    return Json("error"); 
} 

ModelState.IsValid 속성은 false를 반환하므로 사용자 정의 유효성 검사기를 인식합니다. 그러나 요약 컨트롤은 내 메시지를 자동으로 표시하지 않습니다. 요약에 Required 데이터 주석 유효성 검사기가 인식되고 오류 메시지가 표시됩니다.

사용자 정의 오류 메시지를 표시하기 위해 유효성 검사 요약을 어떻게 얻을 수 있습니까?

답변

0

문자열이 "error"JsonResult 개체를 반환하면 MVC는 클라이언트 쪽에서 표시 할 유효성 검사 메시지를 어떻게 알 수 있습니까? 당신이 (ActionResult으로) 정상적인 게시물을 사용하는 경우는 같은 모델을 반환 할 수 있습니다 및 유효성 검사 메시지가 나타납니다 :

return View(viewModel); 

또한 컨트롤러에서 개체를 직접 확인할 수 있으며하여 JsonResult 클래스를 통해 오류 메시지를 반환 return Json("error message here");

또는 사용하여 당신은 ModelState 속성에서 유효성 검사 오류 메시지를 얻을 수 및 JSON과 반납을 시도 할 수 있습니다. 두 번째 대답은 this question입니다.

관련 문제