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

时间:2011-03-17 19:44:12

标签: asp.net-mvc asp.net-mvc-3 razor automapper

我正在尝试向母版页发送一些数据。我使用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)'   有一些无效的论点

发生了什么事?

1 个答案:

答案 0 :(得分:6)

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

@{Html.RenderPartial("RenderCategories");}

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

@Html.Partial("RenderCategories")

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

<% Html.RenderPartial("RenderCategories"); %>
<%= Html.Partial("RenderCategories") %>