【发布时间】:2011-06-01 09:50:36
【问题描述】:
我有 MVC 辅助方法
public static string Selected<T>(this HtmlHelper helper, T value1, T value2)
{
if (value1.Equals(value2))
return "class=selected";
return String.Empty;
}
但是当我从视图中调用它时
@Html.Selected(item.DomainID, Model.DomainID)>
或按照here 的说明进行投射
@Html.Selected(item.DomainID, (int)(Model.DomainID))>
我的视图是这样的
@model FYP.Models.ProjectIdea
@using Helpers
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
<p class="validation-summary-errors">@ViewBag.Message</p>
@section LeftColumn{
<ul id="leftColumn">
@foreach (var item in ViewBag.Model.Domains)
{
<li @Html.Selected(item.DomainID, Model.DomainID)>
@Html.ActionLink(item.Title, "Index",
new { id = item.DomainID },
new
{
@id = "navLink:" + item.DomainID
}
)
</li>
}
</ul>
}
我收到以下错误。
编译器错误消息:CS1973:“System.Web.Mvc.HtmlHelper”没有名为“Selected”的适用方法,但似乎具有该名称的扩展方法。扩展方法不能动态调度。考虑强制转换动态参数或调用扩展方法而不使用扩展方法语法。
有什么帮助吗?
更新:
好的,我通过将参数类型更改为 int 来实现它
public static string Selected<T>(this HtmlHelper<T> helper, int value1, int value2)
{
if (value1.Equals(value2))
return "class=selected";
return String.Empty;
}
虽然这不再是通用的,但仍然解决了我的问题
【问题讨论】:
标签: asp.net-mvc-3