0

Есть ли способ получить тип 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(); 

не подходят.

+0

Чтобы использовать модель в представлении, вам необходимо определить тип модели сверху. Я не понимаю, что вы пытаетесь сделать здесь –

+0

Извините. Я забыл добавить атрибут post. –

+0

, ваша модель определена здесь. единственный способ, которым я могу придумать, чтобы отправить несколько моделей в действие, будет определять их (модель SomeViewModel, SomeViewModel2 model2 и т. д., в этот момент вы можете сделать нулевую проверку, чтобы увидеть, какой из них был принят. –

ответ

0

Вы говорите в контексте View? Если да, вы можете создать строго типизированный вид, используя один из классов ViewModel. Тогда у вас будет тип этой модели в представлении. Самая верхняя строка в представлении.

0

Я думаю, что есть недоразумение с моделью и то, что форма представляет на сервер. В большинстве случаев модель содержит несколько информации о странице, например название, описание, пользовательский файл и т. Д. Когда вы нажимаете submit на форму, вы отправляете в действие только поля, включенные в форму. Это означает, что большинство данных не доступны в этой акции, и вы должны создать его вручную

Посмотрите на этот код:

<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