MVC4:部分视图中的访问控制器属性

时间:2013-11-15 10:11:53

标签: c# .net asp.net-mvc-4

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

我有以下设置:

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?

2 个答案:

答案 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;
}