Раздел рендеринга с динамической моделью в Razor View Engine и ASP.NET MVC 3 - PullRequest
1 голос
/ 01 июня 2011

У меня есть вспомогательный метод 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)>

или разыгрываю как объяснено здесь

@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» не имеетприменимый метод с именем «Выбран», но, похоже, имеет метод расширения с этим именем.Методы расширения не могут быть динамически отправлены.Попробуйте привести динамические аргументы или вызвать метод расширения без синтаксиса метода расширения.

Любая помощь?

Обновление:

Хорошо, явсе получилось, изменив типы аргументов на int

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

Хотя это не является универсальным, перебор все же решил мою проблему

1 Ответ

1 голос
/ 01 июня 2011

Попробуйте изменить тип 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...