MVVM2 패턴을 사용하는 MVC2 응용 프로그램이 있습니다. 양식 입력의 유효성을 검사하기 위해 데이터 주석을 사용하려고합니다.ViewModel의 MVC2 DataAnnotations - MVVM 패턴과 함께 사용하는 것을 이해하지 못합니다.
[HttpGet]
public ActionResult Index()
{
return View();
}
public ActionResult Details(ThingsViewModel tvm)
{
if (!ModelState.IsValid) return View(tvm);
try
{
Query q = new Query(tvm.Query);
ThingRepository repository = new ThingRepository(q);
tvm.Things = repository.All();
return View(tvm);
}
catch (Exception)
{
return View();
}
}
내 Details.aspx보기 강하게 ThingsViewModel에 입력 한 :
<%@ Page Title=""
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<Config.Web.Models.ThingsViewModel>" %>
는 뷰 모델 반환 것의 IList의 구성된 클래스 내 ThingsController에서
나는 두 가지 방법이 개체 및 쿼리 문자열 (양식에 제출 됨) 및 필수 데이터 주석이 있습니다.public class ThingsViewModel
{
public IList<Thing> Things{ get; set; }
[Required(ErrorMessage="You must enter a query")]
public string Query { get; set; }
}
내가 이것을 실행, 나는 다음과 같은 오류와 YSOD을 얻을 값을 입력하지 않고 양식에 제출 버튼을 클릭
The model item passed into the dictionary is of type
'Config.Web.Models.ThingsViewModel', but this dictionary
requires a model item of type
System.Collections.Generic.IEnumerable`1[Config.Domain.Entities.Thing]'.
어떻게 데이터 주석이 뷰 모델 작업을 얻을 수 있나요? 내가 누락 된 부분이나 잘못 될 부분을 볼 수 없습니다. VM이 유효성 검사를 시작하기 전에 VM이 정상적으로 작동하고있었습니다.