可能有其他更好/更清洁/正确的方法,例如更改表单的操作,或更改按钮的PostBackUrl,但这就是我要做的.
的.aspx:
<asp:Label ID="Label1" runat="server" Text="Search Term: "></asp:Label>
<asp:TextBox ID="txtSearchTerm" runat="server"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search"
onclick="btnSearch_Click" />
Run Code Online (Sandbox Code Playgroud)
的.cs:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
return;
if (!string.IsNullOrEmpty(Request.QueryString["SearchTerm"]))
{
string searchTerm = Request.QueryString["SearchTerm"];
txtSearchTerm.Text = searchTerm;
DoSearch(searchTerm);
}
}
protected void btnSearch_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtSearchTerm.Text.Trim()))
{
Response.Redirect("~/Search.aspx?SearchTerm=" + txtSearchTerm.Text.Trim());
}
}
private void DoSearch(string searchTerm)
{
//search logic here
Response.Write("Search result: " + searchTerm);
}
Run Code Online (Sandbox Code Playgroud)
经过对这个主题的更多研究,我认为 javascript 解决方案是最好的:
您可以使用 JavaScript 访问表单的 ACTION 属性。
<form id="myForm" action="Search.aspx" onsubmit="return setAction();">
<input id="textbox" />
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">
function setAction()
{
var myForm = document.getElementById( "myForm" );
var myText = document.getElementById( "textbox" );
if (myForm && myForm.action && myText && myText.value != null )
{
myForm.action = "Search.aspx?q=" + myText.value;
}
return true;
}
</script>
Run Code Online (Sandbox Code Playgroud)
就我个人而言,我并不是 JavaScript 的忠实粉丝……但这不会向服务器添加额外的请求。如果您认为这有任何缺点,请告诉我。
| 归档时间: |
|
| 查看次数: |
14899 次 |
| 最近记录: |