【问题标题】:ContentPage Control (mv) --> MasterPage AccessContentPage Control (mv) --> MasterPage 访问
【发布时间】:2011-07-02 15:24:30
【问题描述】:

是否可以从母版页访问位于内容页面中的控件(使用内容占位符,更准确地说是多视图控件)?

情况是,我有一个带有按钮的菜单,位于母版页中。

现在在我的内容页面中,我有 1 个内容占位符。 具有多个视图的多视图位于其中。

如果我按下菜单 (MasterPage) 中的按钮,那么它应该会打开内容占位符区域中显示的正确视图(及其控件)。

我已经设置了 ActieveViewIndex=0,但我得到了各种奇怪的行为。 我必须在某处使用 ActiveViewIndex++,但似乎没有任何效果。

编辑::

string a = Request.Querystring["one"]
string b = Request.QueryString["two"]
if ( a == "addOne") // where addone is a redirection to the content page from the master page button
{
   mvMultieView.SetActiveView(vView1);
}
else
if ( b == "addTwo")
{
    mvMultieView.SetActiveView(vView2);
}

有什么建议吗? 亲切的问候。

【问题讨论】:

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


    【解决方案1】:

    您可以使用查找控件轻松做到这一点

    View myView = (View)this.Master.FindControl("PlaceHolderFullMain").FindControl("PlaceHolderMain").FindControl("Mymultiview")
    

    【讨论】:

      【解决方案2】:

      我和我的团队完成这项任务的方式(我不知道这是最好的方法,但它很有效)是使用查询字符串(就像您在上一个问题中所做的那样)。我们建立了一个名为iView 的标准QS 变量,它将确定相关视图的名称(不一定是控件名称本身,而是内容控件将响应的某个关键字)。由于我们所有的页面/控件都有一个它们继承自的页面基类,因此我们在基类中放置了一个方法(在我们的例子中,它是在页面级别,但在您的情况下,控件级别可能会起作用)负责获取请求的视图。在控件中,我们将有一个设置 activeView 的机制(也许是开关)。在某些情况下,我们只使用控件的实际 ID(因为混淆起来是个谜)并完全避免了切换。

      http://www.mydomain.com/mypage.com?iView=mySecondView
      
      partial class MyControl : System.Web.UI.WebControl
      {
          // blah blah control stuff
      
          public string getRequestedView()
          {
              return (Request.QueryString["iView"]) ? Request.QueryString["iView"] : String.Empty;
          }
      }
      
      ...
      
      protected void Page_Load(object sender, EventArgs e)
      {
          View myView = myMultiView.FindControl(this.getRequestedView());
          if(myView != null)
              this.MyView.SetActiveView(myView);
      }
      

      【讨论】:

      • 回复。但我已经有 3 个字符串 request.querystring --> 视图出现的 3 个不同页面。但是我如何将它链接到这个“iView”变量中?问候。
      • @Tonz - 因为每个浏览器窗口只能显示 1 个页面,并且每个多视图只能显示 1 个视图,所以这个 iView 变量成为一个全局结构。您使用的是什么版本的 .Net?我可以模拟一个我正在谈论的快速示例项目并将其发布。
      • 加油乔尔!,asp 4.0。但是真正奇怪的是只有第一个按钮可以正常工作,而我的第二个按钮只显示空白区域。即使从头开始编写所有代码。
      • @Tonz - 我在这里发布了一个示例解决方案:joeletherton.com/zips/MultiViewQueryString.zip。它非常原始,并且仅在 Response.Redirect(因为查询字符串是传递机制)和超链接上运行。
      【解决方案3】:

      您是否在母版页或内容页中进行了此更改? 因为我也遇到了同样的问题。

      我的母版页中有链接按钮,我需要激活内容页中的视图控件。 内容页面不是当前加载的页面。

      这种方法对我的解决方案有帮助吗?

      【讨论】:

      猜你喜欢
      • 2010-12-13
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      相关资源
      最近更新 更多