3

我有一个网页:Menu.aspx,其中我有以下相关控件:

  • 带有一些值的 DropDownList
  • 一个超链接,它将我重定向到一个名为 Edit.aspx 的页面。

在我的Edit.aspx页面中,我有一个取消按钮,它将用户重定向回菜单页面

我想做的是当我的用户单击超链接转到编辑页面时,DropDownList 的索引保留在查询字符串中在我的Menu.aspx页面中,我有以下 aspx 代码,但我不确定如何继续

<asp:HyperLink
    ID="lnkEdit"
    NavigateUrl='<%# "Edit.aspx?" + Eval("UserID") + ...not sure... %>'
</asp:HyperLink>

<asp:DropDownList
    ID="myDropDown"
    ...some <asp:ListItems/>
</asp:DropDownList>

编辑:澄清了为什么我使用 NavigateURL。因为我的查询字符串已经执行了 Eval 来确定用户 ID。

4

3 回答 3

4

我会使用LinkButton带有服务器端OnClick事件的控件。

<asp:LinkButton ID="lbtn1" runat="server" OnClick="lbtn1_Click" 
    CommandArgument='<%#Eval("UserID") %>' />

服务器端方法:

public void lbtn1_Click(object sender, EventArgs e)
{
    LinkButton lbtn = (LinkButton)sender;
    string userID = lbtn.CommandArgument;
    string dropDownValue = myDropDown.SelectedValue;
    string navigateUrl = string.Format("Edit.aspx?userid={0}&dropdown={1}", 
        userID, dropDownValue);
    Response.Redirect(navigateUrl);
}

编辑:正如 Royi Namir 在下面指出的那样,如果你可以使用 javascript,它是一个更好的选择。这会造成不必要的服务器往返行程。

于 2012-11-09T18:47:10.137 回答
1

这里有一个简单的方法是使用 Session

例子:

Session["SessionName"] = idDropDownList;

在另一个页面上,仅访问会话的内容

string idDropDownList = (string)Session["SessionName"];

我希望我有所帮助。

于 2012-11-09T18:52:04.570 回答
1

尝试这样的事情

<asp:HyperLink ID="lnkEdit"
    NavigateUrl='<%# "Edit.aspx?" + Eval("UserID") + 
    "&menuid=" + myDropDown.SelectedValue %>'> MyText </asp:HyperLink>

AutoPostBack在您的下拉菜单中设置为 true。每当您更改下拉列表时,新选择的值都会与超链接导航 url 绑定。

于 2012-11-09T18:56:32.230 回答