我一直在使用ASP.NET MVC2进行一些实验,并遇到了一个有趣的问题.
我想在MVC应用程序中定义将用作模型的对象周围的接口.另外,我想通过使用验证属性标记此接口的成员来在功能上利用新的DataAnnotation.
所以,如果我的网站有一个"Photo"对象,我将定义以下界面:
public interface IPhoto
{
[Required]
string Name { get; set; }
[Required]
string Path { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我将定义以下实现:
public class PhotoImpl : IPhoto
{
public string Name { get; set; }
public string Path { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的MVC App控制器可能包含以下方法:
public class PhotoController : Controller
{
[HttpGet]
public ActionResult CreatePhoto()
{
return View();
}
[HttpPost]
public ActionResult CreatePhoto(IPhoto photo)
{
if(ModelState.IsValid)
{
return View();
}
else
{
return View(photo);
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,为了将PhotoImpls绑定到这些操作方法中的参数,我可能会对DefaultModelBinder实现以下扩展: …