Asp.net mvc 4 PartialView仅获取一个视图的数据

Asp.net mvc 4 PartialView仅获取一个视图的数据,asp.net-mvc-4,asp.net-mvc-partialview,Asp.net Mvc 4,Asp.net Mvc Partialview,嘿,伙计们,我正在使用asp mvc4构建一个站点,我在视图方面遇到了问题 首先,我的Layout视图为标题调用partialView,我的partialView从模型中获取数据,以填充标题中的一些数据, 它只在主(索引)视图中工作,但移动到另一个视图时只调用部分视图,而不从数据库获取数据。 希望我解释得好:D _布局视图 @DisplayFor(model=>model.SiteName) @Html.Partial(“_LoginPartial”) @如果(请求已验证) { @Html

嘿,伙计们,我正在使用asp mvc4构建一个站点,我在视图方面遇到了问题 首先,我的Layout视图为标题调用partialView,我的partialView从模型中获取数据,以填充标题中的一些数据, 它只在主(索引)视图中工作,但移动到另一个视图时只调用部分视图,而不从数据库获取数据。 希望我解释得好:D

_布局视图

@DisplayFor(model=>model.SiteName)

@Html.Partial(“_LoginPartial”)
@如果(请求已验证)
{
@Html.Partial(“_SiteHeaderPartial”)
}
@RenderBody()
@如果(请求已验证){
版权所有&复制;您的网站页脚

} $('.carousel')。carousel({ 间隔:5000//改变速度 })
_网站负责人
@model mvcapapplication1.Models.SchoolInfo
@DisplayFor(model=>model.SchoolName)
国家/地区|地址:@Html.DisplayFor(model=>model.SchoolAddress)| 011@Html.DisplayFor(model=>model.SchoolPhone)

索引和关于视图相同(空)


如果您在
About.cshtml
视图中看不到详细信息,这是因为您没有向该视图传递
SchoolInfo
模型(或者模型中没有填充数据)。但是,布局不应包含模型声明(除非它是所有使用该布局的视图都从中派生的基础模型)

从布局中删除
@model mvcapapplication1.Models.SchoolInfo
,而不是
@Html.Partial(“\u SiteHeaderPartial”)

@Html.Action("SiteHeader", "yourControllerName")
其中
SiteHeader()
是一个控制器方法,例如,它获取数据并返回部分视图

[ChildOnlyAction]
public PartialViewResult SiteHeader()
{
    SchoolInfo model = ... // populate your model
    return PartialView("_SiteHeaderPartial", model);
}

Sife注意:您还需要删除
@Html.DisplayFor(model=>model.SiteName)
或将其替换为(比如)
@ViewBag.Title
,并在每个视图中,使用
@{ViewVag.Title=someValue;}将值传递给分部

调试你的代码,检查你的数据库是否被第二次点击。它只在一个视图中获取数据索引一个,转到另一个视图它调用所有内容但数据不显示,返回索引视图将获取数据粘贴页面索引和其他页面的屏幕截图
@Html.Partial()
不调用服务器方法来获取数据。为此,您需要
@Html.Action()
。但是版面永远不应该包含模型声明,除非它是一个基础模型表单,所有其他使用该版面的视图都从中派生。您还需要删除
@Html.DisplayFor(model=>model.SiteName)
,以及版面文件中所指的
@model
,谢谢您的帮助。
<body>
    <header>
        <section id="login">
                    @Html.Partial("_LoginPartial")
            @if (Request.IsAuthenticated)
            {
                    @Html.Partial("_SiteHeaderPartial")                            
                
            }
                </section>
    </header>
    @RenderBody()
    @if (Request.IsAuthenticated){
    <footer>
    <div class="container">
        <div class="row">
            <div class="col-lg-12 text-center">
                <p>Copyright &copy; Your Website footer</p>
            </div>
        </div>
    </div>
</footer>
    }
<!-- jQuery -->
<script src="~/Scripts/Template/js/jquery.js"></script>

<!-- Bootstrap Core JavaScript -->
<script src="~/Scripts/Template/js/bootstrap.min.js"></script>

<!-- Script to Activate the Carousel -->
<script>
$('.carousel').carousel({
    interval: 5000 //changes the speed
})
</script>
@model MvcApplication1.Models.SchoolInfo
<div class="brand">@Html.DisplayFor(model => model.SchoolName)</div>
<div class="address-bar">Country | Address : @Html.DisplayFor(model => model.SchoolAddress) | 011 @Html.DisplayFor(model => model.SchoolPhone)
@Html.Action("SiteHeader", "yourControllerName")
[ChildOnlyAction]
public PartialViewResult SiteHeader()
{
    SchoolInfo model = ... // populate your model
    return PartialView("_SiteHeaderPartial", model);
}