gpt4 book ai didi

asp.net - 如何从布局文件运行代码?

转载 作者:行者123 更新时间:2023-12-02 17:51:17 25 4
gpt4 key购买 nike

我使用以下教程来帮助我在 ASP.NET MVC3 Razor 应用程序中构建 RSS 阅读器:

http://weblogs.asp.net/jalpeshpvadgama/archive/2011/08/17/creating-basic-rss-reader-in-asp-net-mvc-3.aspx

但是,与教程示例不同,我希望 RSS 提要显示在每个页面上,因此将其添加到我的布局文件 /Views/Shared/_Layout.cshtml

我的网站上目前只有 2 个 View ,为了让 RSS 阅读器在这两个 View 上工作,我在我的 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());
}

}

根据我的 WebForms 经验,我只需将 RSS 阅读器代码添加到我的母版页代码后面,它就会自动在每个页面上运行。

是否有一个布局页面 Controller 可以让我做同样的事情?

如何让它在布局页面的每次调用上都起作用,而无需返回任何内容?

<小时/>

编辑:按照@Sebastian的建议,我现在已将此代码添加到部分 View 中,从中删除了CT.Models.RssReader.GetRssFeed() return View() 并将其包含在我的布局文件中:

 @Html.Partial("_MyPartialView")

此部分 View 中的代码是:

<ul>
@foreach (var item in Model)
{
<li>
<a href="@item.Link" target="_blank">@item.Title</a>
</li>
}
</ul>

但是,我没有收到运行时错误:

Object reference not set to an instance of an object.

@foreach (var item in Model) 行出错

最佳答案

您必须创建部分 View 并在其中添加功能。然后在您的布局中渲染此部分。

编辑

你的局部 View 真的是局部 View 吗?我这么说的原因是因为名称前面有“_”,这表明它可能是一个布局(可能只是一个命名约定)。

要修复对象引用错误,您必须在部分 View 顶部添加 @Model 声明。

希望有帮助。

更新为了在分部 View 中使用不同的模型,您需要在渲染分部方法中显式声明要使用哪个模型。

@{Html.RenderPartial("../YourFeed", Model.YourFeedModel);}

请告诉我这是否解决了您的问题。

关于asp.net - 如何从布局文件运行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9708202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com