【发布时间】:2013-03-12 13:17:30
【问题描述】:
我想在我的 MVC 视图中将自定义渲染器定义为 lambda,我可以在部分中使用它来多次渲染相同的东西。我计划将其存储在视图数据中。到目前为止,我已经创建了这个扩展方法来存储渲染器:
public static class HtmlHelperExtensions
{
public static void DefineRenderer<TModel>(this HtmlHelper<TModel> html, string rendererName, Action renderer)
{
html.ViewData["_Renderer" + rendererName] = renderer;
}
}
我正在尝试在我的视图中定义渲染器,但它不起作用;我假设我的语法是关闭的。有人可以告诉我我在这里做错了什么吗?我只希望它在调用时呈现测试段落:
@Html.DefineRenderer("AnalysisTableHeader", () => {
<p>test paragraph</p>
@});
【问题讨论】:
-
究竟想达到什么目的? @helper 对你来说还不够吗?
-
您希望助手做什么?哦,使用
ViewBag而不是ViewData,这是一种更好的做法。 ;) -
@e.campver 其实我的想法正好相反。我尽可能避开动态。我喜欢我的语言是强类型的。
-
@mariozski 我有一个呈现表格的局部视图。我希望调用代码能够指示如何呈现“标题”行,因为它需要呈现两次。
-
@Jez 它仍然是严格输入的,但是是动态的。 :-) 鸭子打字和其他东西仍然是不可能的。
标签: c# asp.net-mvc razor