J'utilise l'approche de BegincollectionItem de Steve Sanderson pour ajouter du contenu dynamique. Tout fonctionne bien quand je le fais au premier niveau. Cependant, lorsque vous essayez de mettre en œuvre une collection imbriquée signifiant un bégincol3lectionItem dans un autre Begincollectionntem, il ne semble pas fonctionner.
Mes modèles sont les suivants: P>
@using prj.Helpers @model prj.Models.Model.Transfer ... <div class="editTransferRow"> //using (Html.BeginCollectionItem("transfers")) @using (Html.BeginCollectionItem("tt.transfers")) { ... <div class="editor-label"> @Html.LabelFor(m => m.swift)<req>*</req> </div> <div class="editor-field"> @Html.TextBoxFor(m => m.swift, new { @class = "t_swift" }) </div> ... <div class="editor-label"> @Html.LabelFor(m => m.transfer_amount)<req>*</req> </div> <div class="editor-field"> @Html.TextBoxFor(m => m.transfer_amount, new { @class = "t_transfer_amount" }) </div> ... } </div>
3 Réponses :
Pour obtenir le préfixe avec un au lieu de juste p> vous " ll au besoin du préfixe du paiement actuel_method aussi. P> html.begincollectionitem code>, vous pouvez accéder à
visionnementdata.templateinfo.htmlfieldprefix code> (J'utilise le package Nuget). Vous êtes sur la bonne voie avec
TT.Transfers code>, mais vous avez besoin du préfixe spécifique à la place.
@using (Html.BeginCollectionItem(ViewData.TemplateInfo.HtmlFieldPrefix + ".tt.transfers"))
"ViewData.TemplateInfo.htmlfieldprefix" vient toujours vide. Quelle référence de package Nuget à ajouter pour obtenir le bon HTMLFieldPrefix?
Je ne suis pas sûr de ce que le Jonk voulait dire en utilisant le paquet Nuget car sans aucun paquet d'addition (autre que le Begincollectionitem) "viewdata.templateinfo.htmlfieldprefix" fonctionne pour moi
Si vous obtenez vide "ViewData.Templateinfo.htmlfieldprefix" Vérifiez ma réponse ci-dessous
Viewdata.templateinfo.htmlfieldprefix est toujours null pour moi aussi.
Je ne pouvais pas adapter correctement la méthode de Emploi Stevens avec MVC 5. J'utilise simplement la classe d'extension de Job Stevens avec nom BegincollectionItem2 ci-dessous: p> <tr>
@using (Html.BeginCollectionItem2("ParameterList"))
{
<td>@Html.TextBoxFor(m => m.ParameterName, new { @class = "form-control" })</td>
<td>
@Html.TextBoxFor(m => m.Unit, new { @class = "form-control" })
</td>
}</tr>
Vous pouvez utiliser le code de Jonk Réponse, mais il ne fonctionnera pas pour des partiels ajoutés de manière dynamique des appels AJAX car "ViewData.TemplateInfo.htmlfieldPrefix" est vide.
La solution consiste à ajouter une propriété à votre modèle avec le formulaire Préfixe et remplissez-le sur l'action appelée par la fonction AJAX. p>
récupérer le préfixe de formulaire à l'aide de jQuery, vous pouvez simplement faire: p>
// "this" a button that will trigger the ajax call and is within the div with the class "partial-enclosing-class" var parentRow = $(this).parents('.partial-enclosing-class'); var hiddenInput = parentRow.find('input[name$="].Id"]'); var formPrefix = hiddenInput.prop('name').replace(".Id", "");
Pouvez-vous à poster votre solution s'il vous plaît?
Ce lien est mauvais. Chaque lien que j'ai trouvé cela supposément montre que la solution a été détournée. Il semble que cela semble.