我有以下视图要呈现它(称为Test.ascx
)。
<div class='test'>
<%=ViewBag.MyTranslation%>
</div>
<div class='link'>
<a href="<%=Url.Action("MyAction", "MyController", new { id = Model })%>">Link</a>
</div>
由我创建的助手:
public static string GetSomething(List<int> items)
{
if(items == null || items.Count == 0)
{
return string.Empty;
}
StringBuilder sb = new StringBuilder();
// many `if` here
foreach(var num in items)
{
// here I want to render the partial view and store it into string
}
}
另一种观点是,我试过
<div class="main">
// some html text
// follow rule #11
// from http://codeclimber.net.nz/archive/2009/10/27/12-asp.net-mvc-best-practices.aspx
<%=Html.GetSomething(Model.NumberList)
</div>
我尝试使用此处的http://akinyusufer.blogspot.in/2011/05/razor-render-mvc3-view-render-to-string.html
方法但它在ViewBag
崩溃,为null,Url.Action
(Url
为空)。
还有另一个更好的解决方案来将视图渲染到字符串中的字符串吗?
答案 0 :(得分:1)
尝试使用helper.RenderPartial渲染测试视图:
public static void GetSomething(this HtmlHelper helper, List<int> items)
{
foreach (var num in items)
{
helper.RenderPartial("Test", num);
}
}
用法:
<% Html.GetSomething(Model.NumberList); %>
或更改GetSomething以返回MvcHtmlString并合并来自helper.Partial(“Test”,num)调用的结果。