0

我已经阅读了几篇关于从 ASP .NET 页面中的模式弹出窗口中获取值的文章,但它们似乎都使用 JavaScript 来完成这一点,如果可能的话,这并不是我真正想要做的。

我有一个 Web 用户控件,它有一个中继器,我从列表中填充到表中。每行都有一个链接按钮,该按钮具有一个重定向 url,其值为查询字符串。

然后我有另一个 Web 用户控件,它只是一个带有面板的链接按钮,而单击后的中继器 Web 用户控件显示实际的模式弹出窗口。

单击中继器上的链接按钮后,是否可以从 Web 用户控件中获取值,而无需重定向到同一页面?我基本上想点击链接,显示模式,一旦关闭,就想访问该值。

我正在使用以下链接填充中继器:

        string linkUrl = "";
        string action = "";
        if (Request.QueryString["action"] != null)
        {
            action = Request.QueryString["action"];
            switch (action)
            {
                case "SetupCompany":
                    {
                        linkUrl = "<a href=CreateCompanies.aspx?companyId=";
                        break;
                    }
                case "ViewCompany":
                    {
                        linkUrl = "<a href=ViewCompany.aspx?companyId=";
                        break;
                    }
            }
        }
        CompaniesBusinessManager mgr = new CompaniesBusinessManager();
        var companies = mgr.GetCompanies(txtCompanyName.Text, txtRegistrationNumber.Text);
        if (linkUrl != "")
        {
            foreach (var c in companies)
            {
                c.Name = linkUrl + c.Id.ToString() + "&action=" + action + ">" + c.Name + "</a>";

            }
        }
        rptrCompanies.DataSource = companies;
        rptrCompanies.DataBind();
4

2 回答 2

0

如果您不希望页面被重定向,则需要使用 javascript。现在有一种方法可以传递来自不同控件的值,而无需返回服务器。

如果您在没有 javascript 的情况下保留它:

我认为您需要将值从一个用户控件传递到另一个用户控件。我曾经通过在它们之间触发可达事件来实现这一点。

例如:

在您的父视图中:

<uc:YourUserControl runat="server" ID="UserControl_Test" 
        OnYourCustomAction="UserControl_YourUserControl_YourCustomAction" />

在您的用户控件中:

 public event EventHandler<CustomActionEventArgs> YourCustomAction;

也在同一个用户控件中创建一个公共触发器方法以供其他用户控件访问

public void TriggerCustomActoinEvent(CustomActionEventArgs EventArgs)
    {
      if (this.YourCustomAction!= null)
      {
        this.YourCustomAction(this, EventArgs);
      }
    }

希望这对我有帮助,在我回家的路上,这是我的想法!

于 2013-06-23T17:03:28.000 回答
0

如果没有页面回发或 JavaScript,这是不可能的。如果您正在使用模态弹出窗口,那么您已经在使用 JS,那么为什么不直接在 JS 中获取值呢?您可以为所有中继器按钮设置一个事件处理程序,如果它们是通过 ajax 加载的,请使用类似这样的东西来附加事件处理程序:

$(document).on('click', '.repeaterButton', function(e) {
    var valueOfBtnClicked = $(this).val();
    // Do something else
});
于 2013-06-23T16:49:10.173 回答