内容页控件(mv)-->主页面访问

3

是否可以从主页面访问位于内容页面(在内容占位符内,更确切地说是多视图控件)中的控件?

情况是,我在主页面上有一个包含按钮的菜单。

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

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

我已将ActiveViewIndex = 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);
}

有什么建议吗? 祝好。
3个回答

2
你可以使用“查找控件”轻松完成这项任务。
View myView = (View)this.Master.FindControl("PlaceHolderFullMain").FindControl("PlaceHolderMain").FindControl("Mymultiview")

1
我的团队和我完成这个任务的方式(虽然我不知道它是否是最佳方法,但它非常有效)是使用查询字符串(就像你在上一个问题中提到的那样)。我们建立了一个名为iView的标准查询字符串变量,用于确定所需视图的名称(并不一定是控件名称本身,而是内容控件会响应的某个关键字)。由于我们所有的页面/控件都继承自一个页面基类,我们在基类中放置了一个方法(在我们的情况下是在页面级别,但在你的情况下,控件级别可能更合适),负责获取所请求的视图。在控件中,我们会有一个机制(可能是switch语句),用于设置activeView。在某些情况下,我们只是使用控件的实际ID(因为它是一个需要混淆的谜),完全避免了switch语句。
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个字符串请求.querystring --> 这3个不同页面的视图。但是如何将它们链接到这个“iView”变量中呢?谢谢。 - Tonz
@Tonz - 由于每个浏览器窗口只能显示1页,每个多视图只能显示1个视图,因此该iView变量成为全局构造。您使用的是哪个版本的.Net?我可以模拟一个快速示例项目来说明我的意思并发布它。 - Joel Etherton
加油 Joel!ASP 4.0。但是真的很奇怪,只有第一个按钮正常工作,我的第二个按钮只显示空白区域。即使从头开始编写所有代码也是如此。 - Tonz
@Tonz - 我在这里发布了一个示例解决方案:http://www.joeletherton.com/zips/MultiViewQueryString.zip。它相当原始,仅使用Response.Redirect(因为查询字符串是传递机制)和超链接进行操作。 - Joel Etherton

0

你在主页或内容页中进行了这个更改吗? 因为我也遇到了同样的问题。

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

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


请在您的帖子中不要使用签名或标语 - user229044

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接