2015-12-04 7 views
5

Czy mogę przesłać formularz wewnątrz komponentu widoku? Wiem, że częściowe widoki nie są możliwe. View component ma swój własny kontroler, więc celem tego pytania jest to, czy mogę użyć tego kontrolera do przesłania formularza renderowanego przez widok komponentu.Czy mogę przesłać komponent widoku MVC6?

Nie jest wymienione w MVC6 view components docs. Myślę, że to nie jest możliwe, ale może się mylę :)

Odpowiedz

5

Podobnie jak w przypadku widoków częściowych, komponenty widoku mogą również powodować wyświetlanie kodu HTML. Tak długo, jak widok renderowany przez komponent widoku ma prawidłowy znacznik formularza, tak, możesz przesyłać formularze.

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

Musisz upewnić się, że masz sposób Logowanie działań w HomeController

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

Ważną rzeczą do zapamiętania jest to, nie powinno być wywołanie tej widoku komponentu wewnątrz innego tagu formularza. Ogólna zasada brzmi: nie powinieneś zagnieżdżać formularzy.

+0

Jestem pewien, że nie można publikować danych przy użyciu komponentu.invoke – conterio

+0

Tak długo, jak masz formularz, możesz go przesłać. Wyświetl komponenty nie są pomocne w renderowaniu fragmentu znaczników na stronie (podobnie jak w przypadku widoków częściowych). – Shyju

+0

Czy istnieje różnica między przesłaniem formularza za pośrednictwem komponentu. Wywołanie następnie wykonanie połączenia Ajax? Widzę widoki częściowe jako serwer obsługujący zawartość statyczną, podczas gdy składniki View wywołują serwer, aby wyświetlać zawartość dynamiczną (podobnie jak wywołanie ajax wywołania dynamicznej treści bez zwracania zupełnie nowego widoku). Czy to jest poprawne?? – conterio

Powiązane problemy