【发布时间】:2015-08-28 00:19:48
【问题描述】:
在我们的应用程序中,我们有渲染 HTML 和生成 JS 的用户控件,这些 JS 应该在页面底部组合并输出。我完成 JS 部分的方式是通过在辅助方法中添加 ViewData 来生成控件。然后布局页面的底部在 body 的末尾渲染整个 JS 块。
查看:
@UserControlHelpers.RenderDataGrid(grid)
助手类:
/// <summary>
/// Renders a DataGrid user control using partial views rendered to strings
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
public IHtmlString RenderDataGrid(Models.UserControls.DataGrid grid)
{
// Generate the JS for the control, storing it for later
this.HtmlHelper.ViewData["dataGridJS"] += this.HtmlHelper.Partial("~/Views/UserControls/DataGridJS.cshtml", grid).ToString();
// Immediately render the HTML for the grid
return this.HtmlHelper.Raw(this.HtmlHelper.Partial("~/Views/UserControls/DataGridHTML.cshtml", grid).ToString());
}
布局:
<html>
<body>
@Html.Raw(UserControlHelpers.HtmlHelper.ViewData["dataGridJS"])
</body>
</html>
问题是当我们渲染包含网格的局部视图时。网格 JS 没有进入我正在输出的 ViewData 对象,而是 ViewData 的一个单独实例。当我们将网格放在主视图上时,它就可以正常工作了。
有没有更好的方法来做到这一点?
【问题讨论】:
-
你可能想看看
sections。 -
但是我需要在部分视图中添加到该部分,根据这个是不可能的:stackoverflow.com/questions/18183462/…