Question

Le modèle:

public class MyObject
{
    public IList<Entry> Entries;
}

public class Entry
{
    public string Name { get; set; }
}

Si j'utilise l'éditeur par défaut pour (modèle=> modèle.entries), les valeurs Nom / ID sont:

<input type="text" value="" name="Entries[0].Name" id="Entries_0__Name">

Si, au lieu de cela, je veux créer un modèle d'éditeur pour celui-ci:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<CMS.Models.MyObject>>" %>

<div class="list">
<%
    for (int i = 0; i < Model.Count; i++)
    { %>
    <div class="object" id="<%: i %>">
        <%: Html.EditorFor(model => Model[i]) %>
        <%: Html.ValidationMessageFor(model => Model[i]) %>
    </div>
<%  } %>
</div>

Les valeurs de nom / ID émises sont:

<input type="text" value="" name="Entries.[0].Name" id="Entries__0__Name">

Le nom a donc une période entre le nom de la propriété et [0] et l'ID a un soulignement supplémentaire à gauche du numéro d'index.Cela ne fonctionne pas avec le classeur de modèle par défaut.Y a-t-il un moyen de faire cela qui fonctionne avec le classeur de modèle par défaut?

Était-ce utile?

La solution

Je pense que vous pouvez faire la majeure partie de cela à l'aide de modèles sans avoir à goûter explicitement sur la liste, ce qui semble causer vos problèmes avec le classeur de modèle.

Essayez de faire ces modèles d'éditeur partagés:

Modèle d'éditeur MyObject

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CMS.Models.MyObject>" %>

<div class="list">
    <%: Html.EditorFor(m => m.Entries) %>
</div>

Modèle d'éditeur d'entrée

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CMS.Models.Entry>" %>

<div class="object" id="<%: ??? %>">
    <%: Html.EditorFor(m => m.Name) %>
    <%: Html.ValidationMessageFor(m => m.Name) %>
</div>

La seule chose que je n'ai pas encore compris, c'est comment obtenir la valeur correcte dans l'attribut ID de la DIV, d'où les points d'interrogation.La mise en garde finale est que je suis à la maison, donc je n'ai pas vraiment essayé cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top