要传递回httppost的通用对象/类类型?

时间:2012-04-03 16:06:27

标签: asp.net-mvc asp.net-mvc-3

我有一个方法可以在我的帖子中从视图中传回我的viewmodel:

[HttpPost]
public ActionResult DoStuff(daViewModel model)
{
    string whatever = model.Name;
    int id = model.Id;
    return View();
}

将什么类型的对象传递回post上的控制器方法(我的viewmodel是否包含在httppost类的类中?)是否存在我可以传递的泛型/类型,如:

[HttpPost]
public ActionResult DownloadFiles(object model)
{
    // cast my daViewModel from object model as passed in???
    string whatever = model.Name;
    int id = model.Id;
    return View();
}

1 个答案:

答案 0 :(得分:3)

您可以传递FormCollection对象:

[HttpPost]
public ActionResult DownloadFiles(FormCollection collection)
{
    // if you want to extract properties directly:
    string whatever = collection["Name"];
    int id = int.Parse(collection["Id"]);

    // if you want to convert the collection to your model:
    SomeModel model;
    TryUpdateModel(model, collection);

    return View();
}

TryUpdateModel方法返回一个布尔值。如果成功更新模型,它将返回true,否则返回false。传入的表单值应与模型的属性名称匹配。

如果你问的是当你打电话给return View()时会传回什么样的模型,那么除非你告诉它,否则答案是没有的。 View()方法有一个过载,它接受一个模型:

return View(model);

您应该返回View期望看到的类型。如果您将视图定义为Foo模型,那么最好在控制器中返回Foo