J'ai un problème en essayant de créer une entité avec un formulaire de création modélisé par vue personnalisée. Voici mon modèle de vue personnalisé pour le formulaire de création de catégorie.ViewModel personnalisé avec MVC 2 Les helpers HTML fortement typés renvoient un objet nul sur Create?
public class CategoryFormViewModel
{
public CategoryFormViewModel(Category category, string actionTitle)
{
Category = category;
ActionTitle = actionTitle;
}
public Category Category { get; private set; }
public string ActionTitle { get; private set; }
}
et ceci est mon contrôle utilisateur lorsque l'interface utilisateur est
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CategoryFormViewModel>" %>
<h2>
<span><%= Html.Encode(Model.ActionTitle) %></span>
</h2>
<%=Html.ValidationSummary() %>
<% using (Html.BeginForm()) {%>
<p>
<span class="bold block">Başlık:</span>
<%=Html.TextBoxFor(model => Model.Category.Title, new { @class = "width80 txt-base" })%>
</p>
<p>
<span class="bold block">Sıra Numarası:</span>
<%=Html.TextBoxFor(model => Model.Category.OrderNo, new { @class = "width10 txt-base" })%>
</p>
<p>
<input type="submit" class="btn-admin cursorPointer" value="Save" />
</p>
<% } %>
Lorsque je clique sur le bouton Enregistrer, il ne marche pas lier la catégorie pour moi à cause de je suis en utilisant le modèle de vue personnalisée et fortement typé html aides comme ça
<%=Html.TextBoxFor(model => Model.Category.OrderNo) %>
Ma source HTML ressemble à ceci
<form action="/Admin/Categories/Create" method="post">
<p>
<span class="bold block">Başlık:</span>
<input class="width80 txt-base" id="Category_Title" name="Category.Title" type="text" value="" />
</p>
<p>
<span class="bold block">Sıra Numarası:</span>
<input class="width10 txt-base" id="Category_OrderNo" name="Category.OrderNo" type="text" value="" />
</p>
<p>
<input type="submit" class="btn-admin cursorPointer" value="Kaydet" />
</p>
</form>
Comment puis-je résoudre ce problème?
En outre, vous devrez vous assurer que le paramètre de votre méthode d'action s'appelle category (ou, si ce n'est pas le cas, utilisez l'attribut [Bind] pour définir le préfixe sur "Category" afin qu'il lie correctement les valeurs). –
Salut Brad, merci. Mettre [Bind] en-dehors de la catégorie n'a pas fonctionné mais changer le nom du paramètre en catégorie a très bien fonctionné. Donc j'ai besoin de nommer les paramètres mêmes que ViewModel.ParameterName si je veux qu'ils soient liés lors de l'utilisation du modèle de vue personnalisé, non? –
Assurez-vous que vous avez un constructeur par défaut. Il serait probablement utile si vous avez posté le code du contrôleur afin que nous puissions voir ce que vous entendez par "Il ne lie pas". – Haacked