我的网页代码如下所示:
<asp:Button ID="btnSearch" runat="server" Text="Search" onclick="btnSearch_Click"/>
我的方法如下:
protected void btnSearch_Click(object sender, EventArgs e)
{
var value = lblGraphicNameValue.Text.ToString();
Response.Redirect("Search.aspx?txtGraphicName=" +
value);
}
目前,当用户按下“搜索”键时按钮页面刷新并加载Search.aspx页面。我想要发生的是将Search.aspx在新窗口中打开。我已经看过使用Window.Open,但我不确定这是否是正确的路由,或者我是否可以使用相同的方法传入我的变量(查询字符串)。有人能指出我正确的方向吗?我的工作原理,我只是希望它在新页面中打开而只留下前一页。
编辑:我应该提到我不能使用javascript(安全环境,每个浏览器都禁用了javascript)。从我正在阅读的内容来看,似乎表明在没有javascript的情况下,从asp.net页面中打开一个新的网页并传入parms是不可行的?这是对的吗?
答案 0 :(得分:1)
以下代码最终完全符合我的要求:
<a href="<%= this.ResolveUrl("Search.aspx?id=" + lblGraphicNameValue.Text.Remove(lblGraphicNameValue.Text.Length -4)) %>"
target="_blank">Search Related</a>
这段代码做了三件事:
这完全符合我的需要而不需要使用自定义类或javascript,虽然它确实让我不得不使用链接而不是按钮。
答案 1 :(得分:0)
使用此课程。
ResponseHelper .Redirect("popup.aspx", "_blank", "menubar=0,width=100,height=100");
public static class ResponseHelper {
public static void Redirect(string url, string target, string windowFeatures) {
HttpContext context = HttpContext.Current;
if ((String.IsNullOrEmpty(target) ||
target.Equals("_self", StringComparison.OrdinalIgnoreCase)) &&
String.IsNullOrEmpty(windowFeatures)) {
context.Response.Redirect(url);
}
else {
Page page = (Page)context.Handler;
if (page == null) {
throw new InvalidOperationException(
"Cannot redirect to new window outside Page context.");
}
url = page.ResolveClientUrl(url);
string script;
if (!String.IsNullOrEmpty(windowFeatures)) {
script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
}
else {
script = @"window.open(""{0}"", ""{1}"");";
}
script = String.Format(script, url, target, windowFeatures);
ScriptManager.RegisterStartupScript(page,
typeof(Page),
"Redirect",
script,
true);
}
}
}
答案 2 :(得分:0)
我认为你在正确的轨道上,但你会混淆服务器端代码和客户端代码。 window.open
是一个Javascript函数,可以在客户端运行。所以你需要从C#渲染一些Javascript来弹出窗口。尝试:
protected void btnSearch_Click(object sender, EventArgs e)
{
var value = lblGraphicNameValue.Text.ToString();
ClientScript.RegisterStartupScript(this.GetType(), "newWindow", String.Format("<script>window.open('Search.aspx?txtGraphicName={0}');</script>", value));
}
这将重新呈现页面,然后在pageload上添加一个脚本,弹出窗口。一点警告,这可能会被浏览器弹出窗口阻止程序阻止。如果你想绕过它,你可以实现这一点,而无需使用Javascript回发到服务器。
答案 3 :(得分:0)
更好的选择是创建一个javascript函数,如:
function PreviewPOSTransaction(Id)
{
if (Id != null)
{
window.open('POSTransReport.aspx?TransID=' + Id);
return true;
}
}
</script>
并在按钮上调用此功能&#34; OnClientClick&#34;事件如:
的OnClientClick =&#34; PreviewPOSTransaction(1);