我有一个视图,我要列出一个复选框列表(帮助器),我不知道如何调用它,因为它总是说我的“类型”是错误的。
我正打算打电话:
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
答案 0 :(得分:1)
将类型的名称放在括号中称为强制转换。它实际上并没有将对象“转换”为另一种类型。相反,它在编译时关闭类型检查。因此,如果它在编译时工作,那证明很少。
在你发布的示例代码中,没有充分的理由在任何地方使用强制转换。 (特别是,你永远不需要将null
投射到任何东西上。)
您需要从模型的某个部分获得IEnumerable<string>
吗?正确的方法取决于模型的结构。
在C#3.0中执行此操作的最简单方法是在某种类型的Select
上调用IEnumerable
扩展方法:
var strings = Model.Usergroups.Select(ug => ug.UsergroupName);
嘿presto。