Cur*_*urt 2 asp.net razor asp.net-mvc-3
我使用以下教程帮助我在ASP.NET MVC3 Razor应用程序中构建RSS阅读器:
但是,与教程示例不同,我希望RSS源显示在每个页面上,因此将其添加到我的布局文件中, /Views/Shared/_Layout.cshtml
我目前在我的网站上只有2个视图,为了让RSS阅读器在两个视图上工作,我在我的代码中得到了以下代码HomeController:
public class HomeController : Controller
{
//
// GET: /Index/
public ActionResult Index()
{
return View(CT.Models.RssReader.GetRssFeed());
}
public ActionResult About()
{
return View(CT.Models.RssReader.GetRssFeed());
}
}
Run Code Online (Sandbox Code Playgroud)
从我的WebForms经验来看,我只需在我的母版页代码中添加RSS阅读器代码,它就会自动在每个页面上运行.
布局页面是否有控制器允许我这样做?
如何在布局页面的每次调用中都能使用它,而不必返回任何内容?
编辑:按照@ Sebastian的建议,我现在已将此代码添加到部分视图中,CT.Models.RssReader.GetRssFeed()从return View()我的布局文件中删除并包含它:
@Html.Partial("_MyPartialView")
Run Code Online (Sandbox Code Playgroud)
这个局部视图中的代码是:
<ul>
@foreach (var item in Model)
{
<li>
<a href="@item.Link" target="_blank">@item.Title</a>
</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)
但是,我没有收到运行时错误:
你调用的对象是空的.
这是错误的 @foreach (var item in Model)
您必须创建局部视图并在其中添加功能.然后在您的布局中,渲染此部分.
编辑
你的局部视图真的是局部视图吗?我说的原因是因为你在名字前面有"_"表示它可能是一个布局(可能只是一个命名约定).
要修复对象引用错误,必须在局部视图的顶部添加@Model声明.
希望能帮助到你.
更新 为了在局部视图中使用不同的模型,您需要显式声明要在render partialmethod上使用哪个模型.
@{Html.RenderPartial("../YourFeed", Model.YourFeedModel);}
Run Code Online (Sandbox Code Playgroud)
如果这解决了您的问题,请告诉我.
| 归档时间: |
|
| 查看次数: |
1794 次 |
| 最近记录: |