2011-03-16 4 views
2

나는 다음과 같은 클래스가 : Model.IsValid은 항상 false입니다

public class Post 
{ 
    [DataType(DataType.Date, ErrorMessage="Please fill in a valid date.")] 
    [RegularExpression(@"^\d{1,2}\/\d{1,2}\/\d{4}$", ErrorMessage="Fill in a valid date.")] 
    public DateTime? PublishDate { get; set; } 
} 

내 편집 작업에

내가이

[HttpPost] 
public ActionResult Edit(Post post) 
{ 
    if (ModelState.IsValid) 
    { 
     return RedirectToAction("Index"); 
    } 
    else 
    { 
     return View(post); 
    } 
} 

처럼이하지만 내 ModelState 항상 잘못되었습니다 . 어째서? 이 문제를 어떻게 해결할 수 있습니까?

나는 또한 여기에 게시했습니다 : http://forums.asp.net/t/1663783.aspx/1?MVC3+how+to+check+datetime+on+model+with+unobtrusive+javascript+.

업데이트 : 나는 통해 실제로 오류가 있음을 발견

ModelState.Values.Select(x => x.Errors); 

하지만 어떻게 내가 거기 얻는 방법을 찾을 수 있습니까? 그리고 더 중요한 것은 어떻게 해결할 수 있습니까?

+1

ModelState에서 오류 컬렉션을 선택 했습니까? – Robert

+0

어디에서 찾을 수 있습니까? ModelState.Errors를 입력하면 그와 비슷한 것을 제공하지 않습니다. –

+0

'if (ModelState.IsValid)'에 중단 점을 설정하고, 디버거로 ModelState 객체를 검사합니다. ViewData 사전에 연결된 항목과 함께 오류 메시지가 표시 될 수 있어야합니다 ... –

답변

1

정규식이 입력 한 날짜와 함께 작동하지 않습니다. 모델 바인더로 날짜를 파싱 할 수없는 경우 DateTime 구조체가 할당되지 않으므로 간단히 제거 할 것입니다.

관련 문제