RenderPartial问题(将数据发送到母版页时)

Kas*_*sem 2 asp.net-mvc automapper razor asp.net-mvc-3

我试图在主页面上发送一些数据.我使用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; }
}
Run Code Online (Sandbox Code Playgroud)

我在_Layout.cshtml文件中使用@ Html.RenderPartial("RenderCategories")调用部分视图.但我不断收到以下错误:

编译器错误消息:CS1502:'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'的最佳重载方法匹配有一些无效的参数

这是怎么回事?

Dar*_*rov 6

RenderPartial扩展方法直接写入到输出流,并且没有返回类型(void).所以这是调用它的正确语法:

@{Html.RenderPartial("RenderCategories");}
Run Code Online (Sandbox Code Playgroud)

或者如果您愿意,可以使用Partial扩展方法:

@Html.Partial("RenderCategories")
Run Code Online (Sandbox Code Playgroud)

将它们与WebForms视图引擎中的等效项进行对比:

<% Html.RenderPartial("RenderCategories"); %>
<%= Html.Partial("RenderCategories") %>
Run Code Online (Sandbox Code Playgroud)