2009-08-10 8 views
0

Ich habe eine Ansicht, wo ich eine Checkbox-Liste (Helfer) auflisten werde, und ich bin nicht sicher, wie ich das nennen soll, da es immer sagt, dass mein "Typ" falsch ist.IEnumerable Konvertierung (?) Für Modell zu Parameter benötigt?

Ich versuche zu nennen:

public static string CheckBoxList(this HtmlHelper htmlhelper, IEnumerable<string> values, IEnumerable<string> labels, string name) 
    { 
     return CheckBoxList(htmlhelper, values, labels, name, ((IDictionary<string, object>) null)); 
    } 

Und Ansicht wie folgt aussieht:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/AdminSite.Master" Inherits="System.Web.Mvc.ViewPage<BookingSystem.MVC.ViewModels.TestViewModel>" %> 

-Test

<h2>Test</h2> 

<table> 
<%= Html.CheckBoxList((IEnumerable<string>)Model.Usergroups, (IEnumerable<string>)Model.Usergroups, "asdf") %> 

<% foreach (var item in Model.Usergroups) { %> 
    <tr> 
     <td> 
      <%= item.UsergroupName %> 
     </td> 
    </tr> 
<% } %> 
</table> 

<p> 
    <%= Html.ActionLink("Create New", "Create") %> 
</p> 

Wie kann ich das zum Laufen bringen? Ich möchte, dass mein Checkbox-Listen-Helfer aus verschiedenen Ansichten funktioniert, also muss ich die Parameter irgendwie konvertieren?

/M

Antwort

1

Setzen Sie den Namen eines Typs in Klammern ist ein gegossenes genannt. Es "konvertiert" ein Objekt nicht in einen anderen Typ. Stattdessen wird die Typprüfung zur Kompilierungszeit ausgeschaltet. Wenn es also zur Kompilierzeit funktioniert, beweist das sehr wenig.

In dem Beispielcode, den Sie gepostet haben, gibt es keinen guten Grund, Casts überall zu verwenden. (Insbesondere müssen Sie nie null zu irgendetwas werfen.)

Sie müssen einen IEnumerable<string> von einem Teil Ihres Modells erhalten? Der richtige Weg dazu hängt von der Struktur Ihres Modells ab.

Der einfachste Weg, es in C# 3.0 zu tun ist, um die Select Extension-Methode auf einer IEnumerable irgendeine Art zu nennen:

var strings = Model.Usergroups.Select(ug => ug.UsergroupName); 

Simsalabim.

+0

Hallo, ich habe das gleiche Problem. Ich muss einen IEnumerable in Parameter übergeben. Und ich versuche, Werte davon mit einer foreach im Controller zu bekommen. Aber es scheint leer ... Woher kommt das nicht? Warum ? – Steffi

Verwandte Themen