gpt4 book ai didi

c# - 如何获取 Controller 名称和基本 Controller 中可用的数据?

转载 作者:太空狗 更新时间:2023-10-30 00:58:19 25 4
gpt4 key购买 nike

我有 2 个问题。

一、背景:

我有一个 PageController : ControllerSearchController : PageController

PageController 定义为:

public class PageController : Controller
{
protected ISite Site;
protected PageConfiguration PageConfiguration;

protected override void Initialize(RequestContext rc)
{
this.Site = new Site(SessionUser.Instance().SiteId);

this.PageConfiguration = this.Site.CurrentSite.GetPage(/* controller name */);

base.Initialize(rc);
}
}

我将 Site & PageConfiguration 存储在 PageController 中,因为每个实现 PageController 的页面都需要它们

问题一:
我正在尝试从现有的 ASP.NET 应用程序移植它。需要页面名称才能获取 PageConfiguration 对象。我将不使用页面名称,而是使用 Controller 的名称。将其作为字符串获取的最佳方式是什么?

问题二:
我正在尝试呈现依赖于该数据的 PartialView,如下所示:

<%@ Page Title="" 
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<PageConfiguration>" %>
<%@ Import Namespace="tstFactsheetGenerator.Models.Panels"%>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<% Html.RenderPartial("Search", new Search { PanelConfiguration = Model.Panels[0] }); %>
</asp:Content>

我可以看到,当调用 RenderPartial() 方法时,PageConfiguration 模型具有我需要的面板。但是在 Search 类的构造函数中,PanelConfiguration 为 null。

是否有更好、更有效的方法来使页面所需的数据可用?谢谢。

最佳答案

问题一:

protected override void Initialize(RequestContext rc)
{
...
var controllerName = requestContext.RouteData.Values["controller"]
...
}

问题二:

当您使用类初始化语法(new { PanelConfiguration = ... })时,PanelConfigurationSearch 的构造函数中将为 null上课,但这有关系吗?你不应该使用 PanelConfiguration那里的属性(property)。在Search partial 它将被初始化。如果您需要在构造函数中使用它(我不明白您为什么需要它),您可以将它添加为构造函数参数。

关于c# - 如何获取 Controller 名称和基本 Controller 中可用的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3098031/

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