Переместите некоторый код сервера из моего представления в HtmlHelper - PullRequest
0 голосов
/ 04 мая 2011

У меня есть следующее утверждение:

window.location = '@Html.Raw(Url.Action("SearchAffaires","Search", (SearchCriteriaAffaire)Session["SearchCriteriaAffaire"]))'

Как я могу преобразовать это с помощью помощника?Что-то вроде:

На мой взгляд:

window.location = '@Html.NavigateSearchPage()'

В HtmlHelpers.cs:

    public static string NavigateSearchPage(this HtmlHelper helper)
    {
        // what do I have to code here?
    }

Или, может быть, есть лучший способ?

Ответы [ 3 ]

1 голос
/ 04 мая 2011

Если вы хотите сгенерированную ссылку, сделайте так, чтобы ваш помощник возвращал HtmlString, используйте UrlHelper вместо HtmlHelper и просто вызовите тот же метод, который вы используете в представлении:

public static HtmlString NavigateSearchPage(this UrlHelper helper)
{
    return helper.Action("SearchAffaires","Search", 
        (SearchCriteriaAffaire)Session["SearchCriteriaAffaire"]);
}
0 голосов
/ 04 мая 2011

Расширение UrlHelper будет иметь больше смысла в этом сценарии, чем помощник HTML.

Вы можете сделать это следующим образом:

    public static string SearchPage(this UrlHelper helper)
    {
        return helper.Action("SearchAffaires",
               "Search", 
               (SearchCriteriaAffaire)Session["SearchCriteriaAffaire"]);
    }

Представление:

window.location = '@Html.Raw(Url.SearchPage())';
0 голосов
/ 04 мая 2011

Вот как ты должен идти.

public static string NavigateSearchPage(this HtmlHelper helper)
{
    var urlHelper = new UrlHelper(helper.ViewContext.RequestContext)
    return helper.Raw(urlHelper.Action("SearchAffaires","Search", (SearchCriteriaAffaire)helper.ViewContext.HttpContext.Session["SearchCriteriaAffaire"])));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...