Frage

Ich glaube, diese Frage zu einem der „For“ Html Helfer gilt, aber mein spezielles Problem verwendet CheckBoxFor ...

Ich habe ein Modell, das vom Typ IEnumerable, wo Rechte ein einfaches POCO ist. Dieses Modell ist eigentlich eine Eigenschaft eines größeren Modells, das ich für eine EditorTemplate erstellt. Hier ist das größere Bild meines Modells:

public class bigmodel
{
     public string Title {get; set;}
     public string Description {get; set;}

     [UIHint("ListRights")]
     public IEnumerable<rights> Rights {get;set;}
}

public class rights
{
    public bool HasAccess {get; set;}
    public string Description {get;set;}
}

Ich habe ein editortemplate namens „LISTRIGHTS“, die meine Hauptansicht verwendet. Zum Beispiel: <% = Html.EditorFor (m => m.Rights)%>.

In ListRights.ascx möchte ich Code wie folgt:

<table>
  <% foreach(rights access in Model)
  { %>
      <tr>
        <td>
            <%=Html.CheckBoxFor( access ) %>
        </td>
        <td>
            <%=access.Description %>
        </td>
      </tr>
  <% } %>
</table>

Ich weiß, dass die CheckBoxFor Linie nicht funktioniert, aber ich mag etwas tun, um das gleiche Ergebnis erzeugt, als wenn der Zugriff eine Eigenschaft auf dem Modell ist.

Im obigen Beispiel würde ich alles gerne auf Post AutoBind.

Ich habe versucht, die CheckBox mit Code ähnlich wie diese vorgetäuscht, aber es funktioniert nicht AutoBind:

<table>
  <% for(int i=0; i < Model.Count(); i++)
  { %>
      <tr>
        <td>
            <%=Html.CheckBox(string.Format("[{0}].HasAccess",i), Model.ElementAt(i).HasAccess)%>
        </td>
        <td>
            <%=access.Description %>
        </td>
      </tr>
  <% } %>
</table>

Irgendwelche Vorschläge?

War es hilfreich?

Lösung 2

fand ich die Antwort durch eine Blog-Post von Steve Sanderson mit http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

Mit "Html.BeginCollectionItem" arbeitete in meiner Situation.

Ich habe ein EditorTemplate für Rechte (in meinem Beispiel). Dann fügte Steve BeginCollectionItem zu dieser Vorlage. Ich rief die Vorlage Html.RenderPartial wie in Steves Blog vorgeschlagen.

Ich wollte Html.EditorFor verwenden (m => m.item), aber das funktioniert nicht, weil Element in der ForEach und nicht im Modell. Könnte EditorFor in diesem Fall verwendet werden?

Andere Tipps

Ich denke, man Probleme hatte, weil dies nicht funktioniert

<%=Html.CheckBoxFor(access) %>

und dies nicht funktioniert entweder

<%=Html.CheckBoxFor(access=>access.HasAccess) %>

, aber das sollte funktionieren

<%=Html.CheckBoxFor(x=>access.HasAccess) %>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top