2011-03-17 73 views
2

我试图将一些数据发送到母版页。我使用Razor作为View Engine和AutoMapper来映射域和视图模型。下面是我的代码:RenderPartial问题(将数据发送到母版页时)

//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; } 
} 

我打电话使用@ Html.RenderPartial从里面我_Layout.cshtml文件中的局部视图(“RenderCategories”)。但我不断收到以下错误:

Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

发生了什么事?

回答

6

RenderPartial扩展方法直接写入输出流并且没有返回类型(void)。因此,这里的正确的语法来调用它:

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

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

@Html.Partial("RenderCategories") 

对比那些与他们在WebForms的等效视图引擎:

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

啊我明白了。这实际上工作,但现在部分视图的模型类型与@RenderBody区域的模型类型冲突。无论如何解决这个问题? – Kassem 2011-03-17 20:18:26

+0

您可以将正确的模型作为第二个参数传递给'RenderPartial'方法。 – 2011-03-17 20:21:24

+0

我试图做到这一点,但我无法正确理解。我仍然得到同样的错误。请介意给我一个例子吗? – Kassem 2011-03-17 20:27:21