我有一个asp.net页面,其中包含搜索页面的表单。
有没有解决方案,以便我可以在网址中找到搜索文本?
我想让我的客户能够复制/粘贴搜索结果网址。
答案 0 :(得分:6)
可能还有其他更好/更清洁/更合适的方法,例如更改form's action或更改按钮的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" />
<强>的.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);
}
答案 1 :(得分:0)
如果您希望能够复制/粘贴URL,则需要从表单中获取搜索参数并重定向回URL上的搜索参数,然后读取QueryString值以执行搜索。
答案 2 :(得分:0)
经过更多研究,我认为javascript解决方案是最好的:
您可以使用JavaScript访问表单的ACTION属性。
<form id="myForm" action="Search.aspx" onsubmit="return setAction();">
<input id="textbox" />
<input type="submit" value="Submit" />
</form>
<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>
就个人而言,我不是JavaScript的忠实粉丝......但是这并没有向服务器添加额外的请求。 如果您认为这有任何缺点,请告诉我。
答案 3 :(得分:0)
你也可以使用jQuery来做这个技巧:
$(function(){
$('input[type="submit"]').click(function(e){
e.preventDefault();
var searchResult = "Search.aspx?q=" + $('input#textbox').val();
$('form#myForm').attr('action',searchResult);
});
});