你好可以在没有模型的View里面运行带有模型的PartialView,或者我必须创建包含部分视图模型的模型吗? 例如:
User have his site:
@{
ViewBag.Title = "MyPanel";
}
<div class="jumbotron">
<!--Right Menu-->
<div id="RightMenu" class="col-md-10" style="max-height:550px; overflow-y:scroll;">
@Html.Action("AllSongs","UserPanel")
</div>
</div>
</div>
我想渲染包含模型的PartialView AllSongs。
public PartialViewResult AllSongs() {
var userId = (int)Session["Login"];
var songs = context.Songs.Where(x => x.UserID.Equals(userId));
return PartialView(songs);
}
但是当代码进入这个方法时,我得到了这样的错误:
Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'
答案 0 :(得分:0)
你可以这样做,但是这个动作将加载与你期望的不同。我想你会希望在正在发生的事情之外加载。如果是这种情况,您可以返回该部分的内容并将其放在元素中 - &gt; $('#MyDiv').html('@Model.AllSongsHtmlContnet');
您可以在控制器中使用辅助函数返回类似的内容:
protected string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = ControllerContext.RouteData.GetRequiredString("action");
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}