ASP.Net LinkBut​​ton在本地工作,但不在服务器上工作

时间:2013-07-18 10:08:30

标签: c# asp.net postback linkbutton

好吧,我打赌这是"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上方,它会告诉我它会进行回发。

已经感谢你了:))

1 个答案:

答案 0 :(得分:2)

你不是在想“客户/服务器”之类的。

您正在做的是开始一个过程。这在您的本地开发机器上工作和可见,因为您坐在显示器前面,可以看到这样的过程。

您很可能也在服务器上启动进程,但没有人可以看到它们。登录服务器并观察任务管理器。

您必须找到一个解决方案,在您的代码的客户端打开一个链接,而不是在服务器端。 (所有这些都可以通过HTML和JavaScript完成,不需要PostBack。)