Asp.net mvc 4 PartialView仅获取一个视图的数据
嘿,伙计们,我正在使用asp mvc4构建一个站点,我在视图方面遇到了问题 首先,我的Layout视图为标题调用partialView,我的partialView从模型中获取数据,以填充标题中的一些数据, 它只在主(索引)视图中工作,但移动到另一个视图时只调用部分视图,而不从数据库获取数据。 希望我解释得好:D _布局视图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
@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 © 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);
}