Могу ли я отправить компонент просмотра MVC6?

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

Это не упоминается в документации по компонентам вида MVC6. Так что это не возможно, наверное, но может я и ошибаюсь:)

1 ответ

Решение

Подобно частичным представлениям, компоненты представления могут также представить вам некоторый 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 :)
}

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

<form id="main-form" asp-controller="main" asp-action="submit" method="post">
    <input asp-for="LocationName" />
    <input type="submit"  />
</form>

@Component.Invoke("Login")
Другие вопросы по тегам