2016-02-15 204 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