我现在的问题是我需要点击2次才能使用正确的文字进行搜索。有没有办法解决我发送的内容并更新它?还有其他解决方案吗?
您好!!
我有2个radiobutton决定使用什么搜索引擎(谷歌或我的),我有1个按钮,将提交一个文本,用于在2个搜索引擎之一中搜索。当我尝试进行谷歌搜索时,第一次它只是打开新窗口,当我点击第二次,它打开谷歌窗口,我想要搜索的单词,如果我尝试进行搜索,它做两个搜索。我做错了什么?我如何以正确的方式工作?
<table><tr>
<td>
<asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="Button1_Click" UseSubmitBehavior="true"/>
</td>
</tr>
<tr align="center">
<td>
<input id="Search1" value="one" type="radio" runat="server" name="sitesearch" />Site Name
<input id="Search2" value="two" type="radio" runat="server" name="sitesearch" />
<img src="http://www.google.com/images/poweredby_transparent/poweredby_FFFFFF.gif" alt="Google" />
</td>
</tr>
</table>
然后我......
protected void Button1_Click(object sender, EventArgs e){
if (Search1.Checked)
{
//My Search
Response.Redirect(Request.UrlReferrer.AbsolutePath +...
}
else if (Search2.Checked)
{
//Google search
btnSearch.Attributes.Add("OnClick", "window.open('http://www.google.com/search?q=" + Regex.Replace(TextB.Text, " ", "+") + "','_blank');");
}
}
......我有这个......
TextBox TextB;
HtmlInputRadioButton radioBSite;
Button btnSearch;
HtmlInputRadioButton radioBGoogle;
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
TextB = (TextBox)FindControl("TextBox1");
TextB.Text = Request["find"];
radioBSite = (HtmlInputRadioButton)FindControl("Search1");
radioBSite.Checked = true;
radioBGoogle = (HtmlInputRadioButton)FindControl("Search2");
btnSearch = (Button)FindControl("btnSearch");
btnSearch.Click += new EventHandler(Button1_Click);
.
.
}
答案 0 :(得分:1)
问题在于这行代码:
btnSearch.Attributes.Add("OnClick", "window.open('http://www.google.com/search?q=" + Regex.Replace(TextB.Text, " ", "+") + "','_blank');");
您正在添加一个客户端OnClick,它将在新窗口中打开搜索(_blank目标)。
如果您这样做:
Response.Redirect("http://www.google.com/search?q=" + TextB.Text);
事情会像你期望的那样奏效。
答案 1 :(得分:0)
而不是输入控件使用asp:RadioButton,autopost属性为true,并在设计时创建并分配事件
答案 2 :(得分:0)
编辑:更新了代码以打开搜索窗口。
以下内容对您有所帮助。它没有执行搜索,但您应该能够获得一般的想法。 ASPX:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager" runat="server"></asp:ScriptManager>
<div>
<asp:TextBox ID="SearchFor" runat="server"></asp:TextBox><br />
<asp:RadioButton ID="RadioGoogle" runat="server" GroupName="SearchSelect" Text="Google" />
<asp:RadioButton ID="RadioCustom" runat="server" GroupName="SearchSelect" Text="Custom" /><br />
<asp:Button ID="Search" runat="server" onclick="Search_Click" Text="Search" />
</div>
</form>
代码隐藏:
protected void Search_Click(object sender, EventArgs e)
{
if (RadioGoogle.Checked)
GoogleSearch(SearchFor.Text);
if (RadioCustom.Checked)
Response.Write("Search Custom for " + SearchFor.Text);
}
private void GoogleSearch(string searchFor)
{
string targetURL = "http://www.google.com/search?q=" + Regex.Replace(searchFor, " ", "+");
string clientScript = "window.open('" + targetURL + "');";
ClientScript.RegisterStartupScript(GetType(), "popup", clientScript, true);
}
交换Response.Write以调用执行搜索的方法。