Domanda

Il modello:

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

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

Se utilizzo l'editor per predefinito (modello => model.entries) i valori Nome/ID sono:

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

Se invece voglio creare un modello editorfor come questo:

<%@ 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>

I valori di nome/ID emessi sono:

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

Quindi il nome ha un periodo tra il nome della proprietà e [0] e l'ID ha un sottolineatura extra a sinistra del numero dell'indice. Questo non funziona con il legante del modello predefinito. C'è un modo per farlo che funziona con il legante del modello predefinito?

È stato utile?

Soluzione

Penso che tu possa fare la maggior parte di questo usando i modelli senza dover iterare esplicitamente nell'elenco, il che sembra causare i tuoi problemi con il legante del modello.

Prova a realizzare questi modelli di editor condivisi:

Modello editoriale myObject

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

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

Modello di redazione di entrata

<%@ 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>

L'unica cosa che non ho ancora capito è come ottenere il valore corretto nell'attributo ID del div, quindi i punti interrogativi. L'avvertenza finale è che sono a casa, quindi in realtà non ci ho provato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top