-->

ASP.Net手动回传没有从动态创建LinkBut​​ton的工作(ASP.Net manual p

2019-08-03 00:10发布

我试图实现手动回发来触发没有连接到一个控制代码。 我不想因为我需要回发过程中引用某些控制,并且想要的结果来更新页面上一个GridView使用AJAX PageMethods。

我已经有两个其他的工作方法,但由于某些原因,我的第三个不部署一次, 但是我的开发机器上正常工作。

后面的代码(的Page_Load)

        switch (Request["__EVENTARGUMENT"]) {
            case "ItemReserved":
                GetAllStock();
                break;
            case "PendingItemRemoved":
                PopulatePending();
                break;
            case "StockInSubmitted":
                SubmitNewStock();    // this doesn't fire
                break;
        }

我插线尽快写入日志文件中的代码达到“SubmitNewStock()”。 日志写入到我的开发机器上,而不是在web服务器上。 无论其他回传正常工作。

网页中的脚本

    function ctxMenu_Reserve() {
        PageMethods.SetItemReserved(CGRefForMenu);
        __doPostBack('', 'ItemReserved');

        HideMouseMenu();
    }

    function ctxMenuPending_Remove() {
        PageMethods.RemovePendingItem(CGRefForPendingMenu);
        __doPostBack('', 'PendingItemRemoved');
    }

    function StockINSubmit(){
        SubmitPlaceHolder = document.getElementById('<%=PlaceholderStockInSubmit.ClientID %>');
        SubmitPlaceHolder.innerHTML = "Processing...";

        __doPostBack('', 'StockInSubmitted');  //Causes postback, but relevant code is not triggered once on my live server
    }

有谁知道这是为什么不工作,一旦我的网站部署到我住的网络服务器?

我应该指出,StockINSubmit()是从一个放置在模态弹出框内部的动态创建客户端链接按钮启动。

        PlaceholderStockInSubmit.Controls.Add(
            new LinkButton() {
                OnClientClick = "StockINSubmit()",
                Text = "Submit",
                ID = "lnkStockInSubmit"
            });

StockINSubmit()替换包含该按钮的DIV的HTML内容。 (所以我点击“提交”,并将其变为“处理”标签)。 我不能明白了一个道理,为什么会引起任何问题,但认为这是值得一提。

Answer 1:

我终于想通了,发生了什么事?

动态创建LinkBut​​ton的是执行回发作为其服务器点击(的onClick)事件的一部分(虽然我没有结合无论如何它)。 在我的dev的机器,该事件的OnClientClick回发跳动的OnClick回传,因此,所有期望代码正在运行正常。

出于某种原因,一旦部署到服务器,服务器OnClick事件被殴打的OnClientClick事件,所以完全回发是存在的,而不附加__EVENTARGUMENT信息的的OnClientClick事件提供。

为了解决这个问题,我发现这个网站的其他帖子解释了如何取消默认回传,但仍执行客户端的JavaScript。

我的服务器端代码现已更新如下:

    LinkButton newButton = new LinkButton() {
        OnClientClick = "StockINSubmit()",
        Text = "Submit",
        ID = "lnkStockInSubmit"
    };
    newButton.Attributes.Add("onClick", "return false;");
    PlaceholderStockInSubmit.Controls.Add(newButton);

这是现在的工作就像一个魅力:)

感谢您的帮助球员。



文章来源: ASP.Net manual postback not working from dynamically created linkbutton