Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC3-渲染部分内部渲染部分不工作_Asp.net Mvc_Asp.net Mvc 3_Partial Views - Fatal编程技术网

Asp.net mvc MVC3-渲染部分内部渲染部分不工作

Asp.net mvc MVC3-渲染部分内部渲染部分不工作,asp.net-mvc,asp.net-mvc-3,partial-views,Asp.net Mvc,Asp.net Mvc 3,Partial Views,我正在处理MVC3/Razor页面,在我的_布局中 @RenderSection("relatedBooksContainer", false) 在另一页中,我将该部分用于: @section relatedBooksContainer { @{ Html.RenderPartial("~/Views/Shared/Bookshelf.cshtml", Model.Books);} } 这不管用。据我所知,RenderSection只会深入一层——它在相关部分中没有Html.Rende

我正在处理MVC3/Razor页面,在我的_布局中

  @RenderSection("relatedBooksContainer", false)
在另一页中,我将该部分用于:

@section relatedBooksContainer
{
@{ Html.RenderPartial("~/Views/Shared/Bookshelf.cshtml", Model.Books);} 
}
这不管用。据我所知,RenderSection只会深入一层——它在相关部分中没有Html.RenderPartial的概念,只会返回一个空白区域。我读到的解决方法是使用RenderPage并将返回的HTML提交到一个字符串,然后在render部分输出该字符串…这很有效!也就是说,在我将模型传递到部分页面之前,它会抛出一个错误,说:

模型项传递到 这本字典是打字机 '书架.视图模型.书架视图模型', 但这本词典需要一个模型 类型项 'System.Collections.Generic.List'1[TheBookshelf.EntityModel.Book]'


有人知道为什么会这样吗?是否有其他方法可以实现此目的?

错误消息是关于模型中书架的类型和返回类型

    public IEnumerable<Book> Bookshelf()
    {
        var q = from book in bookshelf
                select book;
        IEnumerable<Book> myBooks = q.ToList<Book>();

        return myBooks;
    } 

提供的链接中的解决方案对您有效吗

我无法让它工作。也就是说,我无法让ViewData[MainView]将数据从Layout.cshtml传递到partialview。这显然是一个特性,因为每个视图都应该有自己的ViewData obj。看起来ViewData不像我想的那样是全局的。因此,我在部分视图中从布局中获取的ViewData[MainView]为空……我最终找到了解决方法,并能够通过从布局->控制器->部分视图中的@Html.Action调用将页面引用从布局传递到部分视图。我能够让我的partialview访问并写入正确的渲染分区。但是,我想在Layout.cshtml中多次调用相同的partialview。在布局中再次调用同一Partialview不起作用,因为自第一次调用和rendersection更新以来,对布局的引用已更改。代码如下所示:

Layout.cshtml:

@RenderSection("Top", false)
@Html.Action("Load", "Home", new { viewname = "_testPartialView", pageref = this }) 
@Html.Action("Load", "Home", new { viewname = "_testPartialView", pageref = this }) 
局部视图:

@Model Models.testModel
@Model.Content

@{

    var md = (System.Web.Mvc.WebViewPage)@Model.pageRef;

    @*This check fails in subsequent loads as we get null*@
    if(md.IsSectionDefined("Footer")) {
        md.RenderSection("Footer");
    }
    else {
        md.DefineSection("Footer", () => { md.WriteLiteral("<div>My Contents</div>"); });
    }

}

}
请改为尝试@Html.Partial


所以@section relatedBooksContainer在分部中?看起来您需要使用嵌套布局…所以@section relatedBooksContainer在分部中?-代码的这一部分在它自己的常规独立页面中,但是~/Views/Shared/Bookshelf.cshtml是一个分部页面,常规页面正在调用它。这似乎打破了MVC。此外,我无法将其放入_布局文件中,因为实现@section relatedBooksContainer的每个页面都会传入它自己的模型,因此在不传递模型的情况下调用部分页面也不会起作用。对于其他有类似问题的人,这里的解决方案是有效的:@boolean:不需要这种解决方法。作品没有任何模糊。我也有同样的问题,他的回答救了我一天。
 public ActionResult Load(string viewname, System.Web.Mvc.WebViewPage pageRef)
    {            
        var model = new Models.testModel { Content = new HtmlString("time " + i++.ToString()), pageRef = pageRef };
        return PartialView(viewname, model);
    }
@section relatedBooksContainer
{
  @{ Html.Partial("~/Views/Shared/Bookshelf.cshtml", Model.Books);} 
}