在控制器中获取模型的类型

时间:2014-01-15 16:36:14

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-viewmodel asp.net-mvc-controller

有没有办法在不访问参数的情况下获得model类型?

我的控制器:

[HttpPost]
public ActionResult SomeAction(SomeViewModel model)
{
   SomeMethod(/* How to pass models's type here? */)
}

private void SomeMethod(Type type)
{
  // come code
}

方法SomeMethod(Type type)将在许多其他操作中调用。和

Type modelType = typeof(SomeViewModel);
or
Type modelType = model.GetType();

不适合。

2 个答案:

答案 0 :(得分:0)

你是在谈论View的背景吗?如果是,那么您可以使用ViewModel类之一创建强类型视图。然后,您将在View中获得该模型的类型。 View中最顶层的一行。

答案 1 :(得分:0)

我认为模型存在误解,表单提交给服务器的内容是什么。 在大多数情况下,模型有几个关于页面的信息,如标题,描述,userprofile等。 当您在表单上按提交时,您只向表单中包含的字段发送操作。这意味着大多数数据在该操作中不可用,您必须手动创建

看看那段代码:

<h1>@Model.ArticleTitle</h1>
<p>@Model.ArticleDescription</p>
<form method="post">

@Html.EditFor(x=> x.CommentTitle)
@Html.EditFor(x=> x.CommentBody)

</form>

在这种情况下,浏览器仅向服务器发送CommentTitle和CommentBody。 ArticleTitle和ArticleDescription不会被发送。

.U