Lorsque vous avez un formulaire ASP.Net MVC créé par Html.BeginForm(), comment les champs à l'intérieur sont-ils remplis? Dans le cas deComment les formulaires sont-ils pré-remplis dans ASP.Net MVC?
<asp:Content ID="Main" ContentPlaceHolderID="MainContent" runat="server">
<h2>Edit Dinner</h2>
<%= Html.ValidationSummary("Please correct the errors and try again.") %>
<% using (Html.BeginForm()) { %>
<p>
<label for="Title">Dinner Title:</label>
<%= Html.TextBox("Title") %>
<%= Html.ValidationMessage("Title", "*") %>
</p>
D'où provient la valeur de Html.TextBox ("Title")? Je sais, le modèle. Et dans ce cas, le modèle a un champ Titre. Mais j'ai des cas où je dois créer un modèle de vue, donc je finis par avoir quelque chose comme:
public class DinnerViewModel {
public Dinner Dinner {get; set;};
public SomethingElse SomethingElse {get; set;};
}
et l'utiliser comme modèle, le <% = Html.TextBox (« Titre »)%> obtient la bonne valeur. Ou du moins c'est le cas si la validation échoue et que le formulaire est ré-affiché.
Je demande parce que j'ai un cas d'un formulaire qui est soumis via AJAX (en utilisant Ajax.BeginForm()) et le formulaire est actualisé. Je crée un nouvel objet modèle, vide, mais il charge toujours les valeurs de la dernière soumission. Quand je soumets sans AJAX tout fonctionne bien.
Mise à jour
Je regarde le débogueur dans le modèle. Model.Dinner.Title est égal à "" mais Html.TextArea ("Title", Model.Dinner.Title) place la valeur précédente qui a été soumise dans la zone de texte.
Je passe un modèle vide à la vue. – Pablo