Asp.net mvc 3 如何在MVC3中获取输入字段前缀名称

Asp.net mvc 3 如何在MVC3中获取输入字段前缀名称,asp.net-mvc-3,razor,prefix,Asp.net Mvc 3,Razor,Prefix,我有ViewModel,它使用这个ViewModel和控制器 在视图中,我有如下输入字段: @EditorFor(model=>model.TransitApplication.ApplicationDate) 字段名为TransitApplication_ApplicationDate 我想从数据库中的视图更新一些数据,但有一个问题 控制器更新源 public ActionResult Update(int id, FormCollection collection) {

我有ViewModel,它使用这个ViewModel和控制器

在视图中,我有如下输入字段:

@EditorFor(model=>model.TransitApplication.ApplicationDate)

字段名为TransitApplication_ApplicationDate

我想从数据库中的视图更新一些数据,但有一个问题

控制器更新源

 public ActionResult Update(int id, FormCollection collection)
    {

        string prefix = "TransitApplication";

        TransitApplication transitApplication = transitApplicationRepozitory.GetById(id);

        if (transitApplication == null)
            return Content("Error! Not Found!");

        if (TryUpdateModel(transitApplication, prefix))
        {
            if (ModelState.IsValid)
            {
               transitApplicationRepozitory.Update(transitApplication);
               transitApplicationRepozitory.Save();
               return RedirectToAction("Index");
            }
        }

        return Content("Error!");
    }
我希望以编程方式获取前缀(TransitApplication)名称,而不是像以前那样 字符串前缀=“TransitApplication”


一些建议?

看到表单前缀是使用模型属性的类名构建的,那么:

if(TryUpdateModel(transitApplication,typeof(transitApplication).Name))

这将删除您的神奇字符串-虽然这实际上不是模型类上的属性名称,但我猜如果重命名了类,您可能也希望重命名模型上的引用属性-尽管它有点脆弱

另一种选择是,您可以使用类似这样的东西,它允许您以字符串的形式获取属性名称,如
var-propertyInfo=GetPropertyInfo(yourModelObject,u=>u.UserID)-尽管您的action atm中当前没有实例化的模型类