好吧,我打赌这是"This works on my machine"的情况。
问题是:
我LinkButton
中有一个GridView
:
<asp:TemplateField HeaderText="Website">
<ItemTemplate>
<asp:LinkButton ID="L_Website" CausesValidation="true" runat="server" Text='<%# Eval("L_Website") %>'
CommandArgument="GoToWebsite" OnClientClick="return confirm('Are you sure you want to go to this Website?');"
CommandName="GoToWebsite"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
我用DataReader
填充数据:
dr["L_Website"] = Convert.ToString(reader["L_Website"]);
也许你也想看看GoToWebsitecode:
protected void GV_Contacts_RowCommand(object sender, GridViewCommandEventArgs e)
{
string ID = string.Empty;
string status = string.Empty;
if (e.CommandName == "Edit")
{
//code here
}
else if (e.CommandName == "View")
{
//code here
}
else if (e.CommandName == "GoToWebsite")
{
LinkButton lb = (LinkButton)e.CommandSource;
GridViewRow gvr = (GridViewRow)lb.NamingContainer;
LinkButton LinkButton = gvr.Cells[8].Controls[1] as LinkButton;
if (LinkButton.Text.Substring(0, 3) == "www")
{
System.Diagnostics.Process.Start(LinkButton.Text);
}
else
{
System.Diagnostics.Process.Start("www." + LinkButton.Text);
}
}
}
它在本地计算机上运行良好。 它会显示,如果我点击它,本地版本会进行确认,然后打开一个带有此页面的新选项卡。 在服务器(IIS 6.0)上它也显示正确,然后如果我点击它,也进行确认,但是不打开一个新标签与页面。
如果我更改了CausesValidation
,它也无效
如果我没有OnClientClick
,它也不起作用。
如果我(悬停)在LinkButton
上方,它会告诉我它会进行回发。
已经感谢你了:))
答案 0 :(得分:2)
你不是在想“客户/服务器”之类的。
您正在做的是开始一个过程。这在您的本地开发机器上工作和可见,因为您坐在显示器前面,可以看到这样的过程。
您很可能也在服务器上启动进程,但没有人可以看到它们。登录服务器并观察任务管理器。
您必须找到一个解决方案,在您的代码的客户端打开一个链接,而不是在服务器端。 (所有这些都可以通过HTML和JavaScript完成,不需要PostBack。)