PartialView как HtmlHelper? - PullRequest
       3

PartialView как HtmlHelper?

0 голосов
/ 20 марта 2012

Ладно ... поехали ... самый странный и запутанный вопрос месяца :) Я хотел бы создать HtmlHelper, который каким-то образом отображает html, но использует для своего шаблона частичное представление о том, как должен отображаться html, так что проще говоря ... Я хотел бы сделать точно так же, как и "обычный" Контроллер и представление ... получают некоторые данные, передают их в представление и затем визуализируют HTML, но в этом случае я хотел бы передать некоторые данные в частичное представление, а затем получить возвращенный HTML в виде строки и затем вернуть это HTML из метода HtmlHelper ... Таким образом, я хотел бы иметь возможность написать, например, @ Html.HeadMenu, который затем будет возвращать HTML для заголовка, но я также мог бы в любое время без перекомпиляции иметь возможность изменить HTML .. так как все в частичном представлении ... и мне не придется беспокоиться о каких-либо вещах на стороне сервера ... и я также получу выгоду от intellisense, поскольку мой метод будет отображаться в @ Html.

Надеюсь, вы поймете это ... так как это трудно объяснить ..

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 20 марта 2012

Возможно, вы ищете метод Html.RenderAction(actionName, controllerName, routeValues).

1 голос
/ 20 марта 2012

Как насчет Частичного метода HTML-расширения, похоже на то, что вы пытаетесь достичь правильно?

@{
var htmlString = Html.Partial("YourPartialViewName").ToString();
}

Он также имеет перегрузку, так что вы можете передать модель в частичное представление:

@{
var htmlString = Html.Partial("YourPartialViewName", partialViewModel).ToString();
}
0 голосов
/ 20 марта 2012

Я бы сделал это следующим образом

Определите данные, которые вы хотите передать в htmlhelper

public class HeadMenuViewModel
{
    public string SomeProperty {get;set;}
}

Определите представление с именем HeadMenuViewModel.cshtml в Views/Shared/DisplayTemplates

@model HeadMenuViewModel
<div>
 ////
</div>

Теперь вы можете отображать свои данные, используя

@Html.DisplayFor(model => model.HeadMenu)

И вы можете написать для него именованное расширение-ярлык

    using System.Web.Mvc.Html;
...
    public static MvcHtmlString HeadMenu<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
    {
       return helper.DisplayFor(expression);
    }

Теперь измените свойHeadMenuViewModel.cshtml каждый раз, когда вам нужно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...