我正在尝试向母版页发送一些数据。我使用Razor作为我的View Engine,使用AutoMapper在Domain和View Models之间进行映射。以下是我的代码:
//the partial view action method:
public ActionResult RenderCategories()
{
IEnumerable<TopLevelCategory> categories = _categoryService.GetTopLevelCategories();
var viewModel = new MasterPageViewModel
{
Categories =
Mapper.Map
<IEnumerable<TopLevelCategory>, IEnumerable<ParentCategory>>(categories)
};
return View(viewModel);
}
//the partial view file: (this is just a test for now)
@model Sharwe.MVC.ViewModels.MasterPageViewModel
@foreach (var item in Model.Categories) {
@item.Name
}
public class MasterPageViewModel
{
public IEnumerable<ParentCategory> Categories { get; set; }
}
我在_Layout.cshtml文件中使用@ Html.RenderPartial(“RenderCategories”)调用部分视图。但我不断收到以下错误:
编译器错误消息:CS1502: 最好的重载方法匹配 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' 有一些无效的论点
发生了什么事?
答案 0 :(得分:6)
RenderPartial
扩展方法直接写入输出流,没有返回类型(void
)。所以这是调用它的正确语法:
@{Html.RenderPartial("RenderCategories");}
或者如果您愿意,可以使用Partial
扩展方法:
@Html.Partial("RenderCategories")
将它们与WebForms视图引擎中的等效项进行对比:
<% Html.RenderPartial("RenderCategories"); %>
<%= Html.Partial("RenderCategories") %>