Manipolazione forme in ViewUserControl
-
13-09-2019 - |
Domanda
Sto renderizzare un ViewUserControl (file ascx) in una vista:
<% Html.RenderPartial("Comments", Model.Comments); %>
Questa mostra ViewUserControl commenti associati a una voce. Vorrei che questo controllo per rendere un modulo e, in modo gli utenti della mia applicazione può contribuire.
Come si dovrebbe aggiungere un modulo a un ViewUserControl e gestire è postback?
Soluzione
È sufficiente aggiungere il modulo in là lo stesso come si farebbe su qualsiasi pagina. In MVC, il modulo non postback come tale - è se stessa e il suo contenuto (controlli di input) via HTTP Pubblica su un URL sottopone semplicemente
.È sufficiente creare un'azione nel controller (e quindi un URL), che la forma pubblicherà e fare tutto ciò che l'attività è richiesto lì ...
Altri suggerimenti
Non c'è postaback, come in asp.net serie, ci può essere solo tag forma che i messaggi dati a alcuni url (regolatore / azione).
Dentro il controllo utente parziale, scrivere:
<form action="controller/actionname" method="post">
<input type="text" name="inputText" />
<input type="submit" value="Post data to server" />
</form>
In MVC, solo input type = "submit" trigger formano submit. In ASP.NET WebForms standard, è possibile avere molte linkbuttons, Bottoni, ... ma sotto la copertura, che tutti i trigger questa semplice click su input type = "submit" tramite JavaScript evento. Una forma può inviare dati a un solo URL (regolatore / azione), ma che può essere cambiata con javascript (come possiamo vedere nel sorgente html di 'vecchi' ASP.NET WebForms).
poi, nel controllo è possibile gestire i dati del messaggio:
[AcceptVerb(HttpVerb.Post)] // optionally
public ActionResult ActionName(string inputText) ...
Come altri hanno già risposto, è sufficiente rendere un form e gestire è presentare un ActionResult.
Ad esempio, se il modulo (che potrebbe essere reso in qualsiasi punto del sito) è stato presentato, a http: //www.yoururl.com/home/save , è necessario creare un metodo chiamato ActionResult Salva sul controller di casa di gestire il submit (probabilmente posta / metodo GET).