C# ViewModel上的MVC2数据注释-Don';我不理解如何使用MVVM模式

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(

我有一个使用MVVM模式的MVC2应用程序。我正在尝试使用数据注释来验证表单输入

在ThingsController中,我有两种方法:

    [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>