0

是否可以从局部视图访问基本控制器的属性?

我有以下设置:

public class BaseController : Controller
{
    private string ServerName
    {
        get
        {
            return Request.ServerVariables["SERVER_NAME"];
        }
    }
    private Entities.Client _Client { get; set; }
    public Entities.Client Client
    {
        get
        {
            return this._Client ?? (this._Client = this.HttpContext.Application["Client"] as Entities.Client);
        }
    }
    private Settings _Settings { get; set; }
    public Settings Settings
    {
        get
        {

            if (this._Settings == null)
            {
                this._Settings = new Settings(this.Client, this.Client.WebPageTemplateCapabilities != null ? SettingsType.XML : SettingsType.SQL);
            }

            return this._Settings;
        }
    }
}

我的所有控制器都继承 BaseController,并且在这些控制器的子操作的某些视图中,我呈现部分视图。有没有办法从这些部分视图之一访问 BaseController.Settings ?

4

2 回答 2

2

视图所需的任何信息都应该控制器传递到视图,然后进一步从视图传递到局部,例如

public ActionResult Index()
{
    return View(this.Settings);
}

在你看来

@model Settings

@Html.RenderPartial("SomePartial", Model)

在你的部分

@model Settings

// use settings

我的所有控制器都继承 BaseController,并且在这些控制器的子操作的某些视图中,我呈现部分视图

在这种情况下,您只需要从控制器传递模型,例如

public ActionResult SomeAction()
{
    return PartialView("SomePartialView", this.Settings);
}
于 2013-11-15T10:17:14.170 回答
1

我最终这样做了:

@{
    var settings = (ViewContext.Controller as BaseController).Settings;
}
于 2013-11-15T10:29:02.077 回答