是否可以从局部视图访问基本控制器的属性?
我有以下设置:
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?
答案 0 :(得分: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);
}
答案 1 :(得分:0)
我最终这样做了:
@{
var settings = (ViewContext.Controller as BaseController).Settings;
}