好的..这里我们去...这个月里最奇怪,最令人困惑的问题:) 我想创建一个HtmlHelper,一些如何渲染html,但使用部分视图的模板,如何渲染html,所以更简单..我想做一个“正常”控制器和视图确实..获取一些数据,将其传递给视图,然后渲染html,但在这种情况下,我想将一些数据传递给局部视图,然后将返回的html作为字符串,然后返回来自HtmlHelper方法的html ...... 通过这种方式,我希望能够编写例如@ Html.HeadMenu,然后将返回头部菜单的html,但我也能够在任何时候无需重新编译就能够更改html ..因为它全部在部分视图中......我不必担心任何服务器端的东西..而且我也会从智能感知中获益,因为我的方法会出现在@Html中。
我希望你能理解这一点......因为它很难解释..
提前致谢!
答案 0 :(得分:1)
Partial HTML扩展方法怎么样,听起来就像你想要实现的那样?
@{
var htmlString = Html.Partial("YourPartialViewName").ToString();
}
它也有一个重载,因此您可以将模型传递给局部视图:
@{
var htmlString = Html.Partial("YourPartialViewName", partialViewModel).ToString();
}
答案 1 :(得分:1)
您可能正在寻找Html.RenderAction(actionName, controllerName, routeValues)
方法。
答案 2 :(得分:0)
我会这样做
定义您想要传递给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