Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net中的Http请求问题_C#_Asp.net_.net_Visual Studio 2008_Iis 7 - Fatal编程技术网

C# ASP.Net中的Http请求问题

C# ASP.Net中的Http请求问题,c#,asp.net,.net,visual-studio-2008,iis-7,C#,Asp.net,.net,Visual Studio 2008,Iis 7,我使用的是C#+VS2008+.NET3.5+ASP.Net+IIS7.0+ADO.Net+SQLServer2008。我想开发一个ASP.Net aspx页面,该页面具有以下功能 1它可以接受3个Url参数param1、param2和param3,请求如下所示 2当页面响应客户端浏览器时,我想在结果html页面附近显示一个文本输入和一个提交按钮,文本输入的值与param1相同,在本示例中,abc将显示在文本框中,在浏览器地址栏中,我想保留原长url 3当用户更改文本输入中的值,并单击提交按钮

我使用的是C#+VS2008+.NET3.5+ASP.Net+IIS7.0+ADO.Net+SQLServer2008。我想开发一个ASP.Net aspx页面,该页面具有以下功能

1它可以接受3个Url参数param1、param2和param3,请求如下所示

2当页面响应客户端浏览器时,我想在结果html页面附近显示一个文本输入和一个提交按钮,文本输入的值与param1相同,在本示例中,abc将显示在文本框中,在浏览器地址栏中,我想保留原长url

3当用户更改文本输入中的值,并单击提交按钮时,我想再次将此请求发送到foo.aspx,并将param1值更改为用户在文本输入中输入的值,同时保持parame2和param3的值与上次请求的响应相同。例如,当用户请求并显示页面时,当用户将文本输入从abc更改为google时,新请求将被删除


有参考样品吗?我的问题是我不知道如何在一个aspx页面中实现这么多功能。

如果您希望浏览器地址栏显示更新的URL,您可以允许按钮单击发回服务器,然后处理文本框的TextChanged事件

在TextChanged事件处理程序中,使用已更改的querystring参数构建新URL,并使用Response.Redirect将浏览器重定向到新URL

这里有一个简单的例子

给定一个带有文本框和按钮的ASPX页面,诸如此类

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title></title>
</head>
<body>

  <script type="text/javascript">
    function requery() {
      var query = location.search.substring(1);
      var pairs = query.split("&");
      var param1Value = document.getElementById("txtParam1").value;

      url = "/Default.aspx?param1=" + param1Value;
      for (var i = 0; i < pairs.length; ++i) {
        var pair = pairs[i];
        if ((pair.indexOf("param1") != 0) && (pair.length > 0)) {
          url += "&" + pair;
        }
      }
      location.href = url;
    }
  </script>

  <form id="form1" runat="server">
  <div>
    <asp:TextBox ID="txtParam1" runat="server" OnTextChanged="txtParam1_TextChanged"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Submit" />
    <input type="button" value="Client Action" onclick="requery()" />
  </div>
  </form>
</body>
</html>

您是否尝试过
?当然,命名您的输入
param1
。如何使用该解决方案?你能给我看一个完整而简单的样本吗?@George2,保留原来的两个参数是什么意思。我提供的示例应该在URL上保留param2和param3。对于两个页面加载事件,这是意料之中的。第一个是对按钮回发事件的响应,第二个是对浏览器重定向到新URL的响应(这是一个GET-so IsPostBack==false),这是具有新参数的同一目标页。@George2,我相信我在第一条评论中已经回答了这个问题。我引用“对于两个页面加载事件,这是预期的。第一个是响应按钮的回发事件,第二个是响应浏览器重定向到新URL(这是一个GET so IsPostBack==false),这是具有新参数的同一目标页面”@George2,另一种方法是在客户端使用javascript在按钮点击上构建新的URL(这将在客户端事件而不是服务器端事件上处理),然后将Window.Location更改为新的URL。在这里查看有关Window的更多信息。位置:@George2,我会找时间整理一个样本。但是您不会对按钮使用服务器端控件,因为您想处理这个客户端。@George2,我用一个快速脏的javascript函数和一个调用该函数的客户端按钮更新了ASPX代码。现在您有了一个简单的示例,说明如何在客户端和服务器端执行此操作。JS可能会得到改进,这并不是我经常使用的东西,所以我只使用了基本功能,但它应该可以工作。
using System;
using System.Text;

namespace WebApplication1
{
  public partial class _Default : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      if (!IsPostBack)
      {
        txtParam1.Text = Request.QueryString["param1"];
      }
    }

    protected void txtParam1_TextChanged(object sender, EventArgs e)
    {
      // Build the new URL with the changed value of TextBox1      
      StringBuilder url = new StringBuilder();
      url.AppendFormat("{0}?param1={1}",
        Request.Path, txtParam1.Text);

      // Append all the querystring values that where not param1 to the
      // new URL
      foreach (string key in Request.QueryString.AllKeys)
      {
        if (string.Compare(key, "param1", true) != 0)
        {
          url.AppendFormat("&{0}={1}", key, Request.QueryString[key]);
        }
      }

      // Redirect the browser to request the new URL
      Response.Redirect(url.ToString());
    }
  }
}