C# ViewModel上的MVC2数据注释-Don';我不理解如何使用MVVM模式
我有一个使用MVVM模式的MVC2应用程序。我正在尝试使用数据注释来验证表单输入 在ThingsController中,我有两种方法:C# ViewModel上的MVC2数据注释-Don';我不理解如何使用MVVM模式,c#,asp.net-mvc,mvvm,data-annotations,C#,Asp.net Mvc,Mvvm,Data Annotations,我有一个使用MVVM模式的MVC2应用程序。我正在尝试使用数据注释来验证表单输入 在ThingsController中,我有两种方法: [HttpGet] public ActionResult Index() { return View(); } public ActionResult Details(ThingsViewModel tvm) { if (!ModelState.IsValid) return View(
[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();
}
}
My Details.aspx视图是ThingsViewModel的强类型视图:
<%@ Page Title=""
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<Config.Web.Models.ThingsViewModel>" %>
如何使数据注释与ViewModel一起使用?我看不出我遗漏了什么,也看不出哪里出了问题——在我开始胡闹验证之前,虚拟机运行得很好。我认为问题不在于验证 改变这条线
tvm.Things = repository.All(); //Is this the Linq extension method 'All()'?
对此
tvm.Things = repository.ToList();
我不知道这是什么,也不知道它是做什么的
new ThingRepository(q);
它接受一个字符串参数并返回某种Linq IQuerable或List?如果返回的是其他内容,则可能是导致问题的原因。是否启用了客户端验证?这甚至可能是一个快速的黑客修复,但关于错误消息-很难说没有额外的信息。你能发布你的视图和呈现的Html吗? 你的详细路线是什么样的?
如果您在Details方法的开头设置了断点,那么当您单击submit按钮时它是否会被点击?看起来您可以这样声明您的ThingsView模型:
public class ThingsViewModel: IEnumerable<Thing>
公共类ThingsViewModel:IEnumerable
然后根据需要实现接口以访问内容列表。我认为ASP.NET MVC可能试图将您的视图映射到错误的控制器。返回视图时,可能需要指定要使用的视图文件名 返回视图(“视图名称”)
new ThingRepository(q);
public class ThingsViewModel: IEnumerable<Thing>