Если вы хотите, чтобы в адресной строке браузера отображался обновленный URL-адрес, вы можете разрешить нажатие кнопки для отправки на сервер, а затем обработать событие TextChanged в текстовом поле.
В обработчике событий TextChanged вы создаете новый 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>
Ваш код для обработки события TextChanged этого текстового поля может сделать следующее.
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());
}
}
}