2015-12-04 5 views
5

Можно ли каким-либо образом представить форму внутри вида компонента? Я знаю, что это невозможно для частичных просмотров. У компонента View есть свой собственный контроллер, поэтому цель этого вопроса заключается в том, могу ли я использовать этот контроллер для отправки формы, отображаемой по представлению компонентов.Могу ли я представить компонент представления MVC6?

Не упоминается в MVC6 view components docs. Так что это невозможно, я думаю, но, может быть, я ошибаюсь :)

ответ

5

Подобно частичным представлениям, компоненты просмотра также могут отобразить HTML-код. Поэтому, если в представлении, представленном вашим компонентом вида, есть допустимый тег формы, да, вы можете отправлять формы.

@model YourNamespace.LoginVM 
<form asp-controller="Home" asp-action="Login"> 
    <input asp-for="Name" /> 
    <input asp-for="Password" /> 
    <input type="submit" /> 
</form> 

Вы должны убедиться, что у вас есть метод Логин действий в HomeController

[HttpPost] 
public ActionResult Login(LoginVM model) 
{ 
    //do something :) 
} 

Важно помнить, вы не должны называть этот вид компонента внутри другого тега формы. Общее правило: Вы не должны быть вложенными формами.

+0

Im очень уверен, что вы не можете отправлять данные, используя component.invoke – conterio

+0

Пока у вас есть форма, вы можете отправить его. Компоненты просмотра не являются частью помощника, чтобы отобразить фрагмент разметки на вашей странице (аналогично частичным представлениям). – Shyju

+0

Будет ли разница между отправкой формы через Component.Invoke, а затем вызов Ajax? Я вижу частичные представления как сервер, обслуживающий статический контент, в то время как Viewcomponents вызывают сервер для обслуживания динамического контента (так же, как вызов ajax, возвращающий динамический контент, не возвращая совершенно новое представление). Это верно?? – conterio

Смежные вопросы