【问题标题】:Send Command.Value via Javascript to codebehind通过 Javascript 将 Command.Value 发送到代码隐藏
【发布时间】:2016-11-09 18:14:19
【问题描述】:

我对 ASP.Net 还很陌生,但我被困住了。 如果单击我的超链接,则应将 Command.Value 发送到服务器。获得该 Command.Value 后,后面的代码应检查它是否正确并重定向到特定站点,否则只需重新加载页面。 这是我的超链接:

<asp:HyperLink 
ID="Link" 
runat="server" 
Visible="true" 
NavigateUrl="javascript:document.FormServer.Command.value = 
'test';document.FormServer.submit();"
>Test!!</asp:HyperLink>

首先我想问一下我的超链接是否正确。此外,关于我需要在哪里插入我的 If 语句,我有点卡在后面的代码上。

【问题讨论】:

  • document.FormServer 听起来并不熟悉。假设有一个名为“FormServer”的表单,那么您可以执行类似 document.forms["FormServer"].submit(); 的操作。但 document.FormServer.Command.value 我不知道。你能张贴你的 asp.net 表格吗?

标签: javascript asp.net vb.net


【解决方案1】:

我相信通过 GET 在链接的 url 中发送参数要容易得多。但是,如果出于任何原因您想通过邮寄和使用 javascript 进行操作,请尝试此操作。

Web 表单: param1 是一个隐藏字段,其值将使用 Javascript 设置。提交表单时,隐藏字段会随表单一起发布。

<form id="FormServer" runat="server" >
    <input type="text" id="param1" name="param1" style="display:none;" />
    <div>
        <asp:HyperLink 
        ID="Link" 
        runat="server" 
        Visible="true" 
        NavigateUrl="javascript:document.getElementById('param1').value = 'test';document.forms['FormServer'].submit();"
        >Test!!</asp:HyperLink>
    </div>
</form>

背后的代码:

protected void Page_Load(object sender, EventArgs e)
{
    string param1Value = Request["param1"];
    if (param1Value == "test")
        Response.Redirect("~/Default.aspx");
    else if(param1Value == "lost")
        Response.Redirect("http://www.google.com");
}

在它后面的代码中检查 this.IsPostBack 可能很有用。这告诉您为什么要加载页面。如果是因为点击了链接,那么 IsPostBack 将为 true。

【讨论】:

  • 看起来很简洁,只有一个问题:ASP.net 在 master.page 中已经有一个表单,并且不允许在 child.page 中使用第二个表单:/
  • 通过为 Master.Site-Form 提供 ID“FormServer”解决了这个问题,现在它可以工作了。
猜你喜欢
  • 2016-05-11
  • 1970-01-01
  • 2013-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
相关资源
最近更新 更多