Fel*_*faw 11 asp.net partial-views asp.net-mvc-2
我正在为asp.net MVC布局页面设置共享内容(导航).
这是我的部分视图"_LayoutPartial.cshtml",其中包含从模型中提取导航数据的代码.
@model MyApp.Models.ViewModel.LayoutViewModel
<p>
@foreach (var item in Model.navHeader)
{
//Test dump of navigation data
@Html.Encode(item.Name);
@Html.Encode(item.URL);
}
</p>
Run Code Online (Sandbox Code Playgroud)
以下是我的控制器"LayoutController.cs"的代码.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MyApp.Models.ViewModel;
namespace MyApp.Controllers
{
public class LayoutController : Controller
{
//
// GET: /Layout/
LayoutViewModel layout = new LayoutViewModel();
public ActionResult Index()
{
return View(layout);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是"_Layout.cshtml"页面的代码.我试图使用Html.RenderAction(Action,Controller)方法在这里调用局部视图.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<p>
@{Html.RenderAction("Index","Layout");}
</p>
@RenderBody()
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当布局页面执行@ {Html.RenderAction("索引","布局");}行时,它会抛出一条错误消息"错误执行处理程序的子请求'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'."
我想念的是什么朋友?如何在布局页面中调用局部视图?
谢谢大家!
Dar*_*rov 18
代替:
public ActionResult Index()
{
return View(layout);
}
Run Code Online (Sandbox Code Playgroud)
做:
public ActionResult Index()
{
return PartialView(layout);
}
Run Code Online (Sandbox Code Playgroud)
如果从子操作返回普通视图时不这样做,则此普通视图会尝试包含布局,布局会尝试渲染子操作,而子操作又返回视图,而视图又包含布局反过来试图渲染子动作,...我们最终得到的名称就像这个同一个网站所移植的名字一样.
在你的部分你也不需要做双重编码.@ Razor函数已经进行了HTML编码:
@model MyApp.Models.ViewModel.LayoutViewModel
<p>
@foreach (var item in Model.navHeader)
{
@item.Name
@item.URL
}
</p>
Run Code Online (Sandbox Code Playgroud)
首先验证您的子视图是否在Shared
目录中
@Html.Partial("_LayoutPartial")
Run Code Online (Sandbox Code Playgroud)
要么
@{Html.RenderAction("actionname", "controller name");}
Run Code Online (Sandbox Code Playgroud)
并且不要使用@Html.Encode()
,Razor已经为你做了.只是用
@item.Name
@item.URL
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33248 次 |
最近记录: |