【问题标题】:Render section with dynamic model in Razor view engine and ASP.NET MVC 3在 Razor 视图引擎和 ASP.NET MVC 3 中使用动态模型渲染部分
【发布时间】: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


    【解决方案1】:

    尝试将HtmlHelper 类型更改为通用类型(注意通用T)...

    public static string Selected<T>(this HtmlHelper<T> helper, T value1, T value2)
    {
        if (value1.Equals(value2))
            return "class=selected";
        return String.Empty;
    }
    

    【讨论】:

    • :( 将HtmlHelper 类型更改为T 后仍然出现相同的错误
    • 您可以尝试将您的动态(假设您的变量之一上的 DoaminID)类型转换为它的实际类型吗?
    • 好的,现在可以了。诀窍是从 HtmlHelper 中删除泛型类型并将参数转换为实际类型。 public static string Selected&lt;T&gt;(this HtmlHelper helper, T value1, T value2) { if (value1.Equals(value2)) return "class=selected"; return String.Empty; }
    猜你喜欢
    • 2011-05-02
    • 1970-01-01
    • 2011-03-11
    • 2012-06-24
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    相关资源
    最近更新 更多