2016-02-15 140 views
0

的局部视图我在那里我建立一个扩展的HtmlHelper,这会使代码文章要求:加载代码与ASP.NET MVC 4 /剃刀

class Article 
{ 
    public string Title { get; set; } 
    public string Description { get; set; } 
    public string ViewName { get; set; } 
} 

到目前为止,我可以得到它呈现标题和描述是否正确,但是如何将视图中的HTML加载到我的帮助程序中并进行渲染?的助手是如何工作的

例子:

public static Article(this HtmlHelper helper, Article article) 
{ 
    return $"<h1>{article.Title}</h1>"; 
    //...need to load/append View HTML as well before returning 
} 
+0

'HtmlHelper'扩展方法返回'MvcHtmlString'。它不清楚你想在这里做什么。 –

+0

@StephenMuecke在我的部分观点里面,有一些HTML。我希望在文章被渲染之前将这个HTML添加到文章中(所以基本上我正在编写一个封装器,在部分视图中围绕一些HTML文件进行封装) - 这有帮助吗? – series0ne

+1

@ series0ne您应该设计Partial View的HTML来从Helper接收Html,而不是其他方式。你必须在你的HTML中设置一些结构,以期望你的帮手所呈现的HTML –

回答

1

,我发现自己的答案;为了协助他人:

public static MvcHtmlString Article(this HtmlHelper helper, Article article) 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append($"<h1>{article.Title}</h1>"); 
    sb.Append(helper.Partial(article.ViewName).ToHtmlString()); 
    return new MvcHtmlString(sb.ToString()); 
} 
+0

并且你不能在Partial中包含标题?从这个节省你...? – Seabizkit

+0

这更复杂 - 这是一个非常基本的例子;实际上,整个事件呈现标题,横向规则,描述,包含HTML的面板,包含用于HTML的代码的面板页脚(部分视图中的相同HTML,以不同方式加载) ,还创建了唯一的ID对文章的锚定导航 – series0ne

+1

公平足够......做好解决方案然后......我想是挣扎,因为我不知道完整的意图。我会嵌套部分视图,但这可能更适合您的要求 - 上投票;-)。你不需要将视图模型传递给你的部分 – Seabizkit