IEnumerable преобразование (?) Для модели в параметр необходимо? - PullRequest
0 голосов
/ 10 августа 2009

У меня есть представление, где я собираюсь перечислить список-флажок (помощник), и я не уверен, как это вызвать, так как он всегда говорит, что мой "тип" неверен.

Я пытаюсь позвонить:

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));
    }

И вид выглядит так:

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

Тестовое задание

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

Как я могу заставить это работать, я хочу, чтобы мой помощник со списком флажков работал из разных представлений, поэтому я думаю, что мне нужно как-то преобразовать параметры?

/ M

1 Ответ

1 голос
/ 10 августа 2009

Помещение имени типа в скобки называется приведением. На самом деле он не «конвертирует» объект в другой тип. Скорее, он отключает проверку типов во время компиляции. Так что, если он работает во время компиляции, это очень мало.

В приведенном вами примере кода нет веских причин для использования приведений где-либо. (В частности, вам никогда не нужно разыгрывать null ни к чему.)

Вам нужно получить IEnumerable<string> от какой-то части вашей модели? Правильный способ сделать это будет зависеть от структуры вашей модели.

Самый простой способ сделать это в C # 3.0 - это вызвать метод расширения Select для IEnumerable некоторого типа:

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

Привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...