Dav*_*Dev 4 c# asp.net-mvc controller
我有两个问题.
一,背景:
我有一个PageController : Controller和SearchController : 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);
}
}
Run Code Online (Sandbox Code Playgroud)
我在PageConfiguration中存储了Site&PageConfiguration,因为实现PageController的每个页面都需要它们
问题1:
我正在尝试从现有的ASP.NET应用程序移植它.这需要页面名称来获取PageConfiguration对象.而不是页面名称,我将改为使用Controller的名称.对于我来说,将其作为字符串的最佳方法是什么?
问题2:
我正在尝试渲染依赖于该数据的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>
Run Code Online (Sandbox Code Playgroud)
我可以看到,当调用RenderPartial()方法时,PageConfiguration Model具有我需要的Panel.但是在Panel类的构造函数中,PanelConfiguration为null.
是否有更好更有效的方法来提供页面所需的数据?谢谢.
问题1:
protected override void Initialize(RequestContext rc)
{
...
var controllerName = requestContext.RouteData.Values["controller"]
...
}
Run Code Online (Sandbox Code Playgroud)
问题2:
当您使用类初始化程序语法(new { PanelConfiguration = ... })时PanelConfiguration,在Search类的构造函数中将为null,但它是否重要?你不应该在PanelConfiguration那里使用该物业.在Search部分中它将被初始化.如果你需要在构造函数中使用它(我不明白你为什么需要它),你可以将它添加为构造函数参数.
| 归档时间: |
|
| 查看次数: |
3055 次 |
| 最近记录: |