DNN 8.00.02 - 获取当前模块ID

时间:2016-05-12 16:04:45

标签: javascript jquery asp.net dotnetnuke

点击输入后,我的DNN网站上的登录页面无法提交。在/DesktopModules/AuthenticationServices/DNN/Login.ascx文件中探讨之后,我发现罪魁祸首是<%#ModuleId%>没有返回模块ID。

以下是它的使用方法:

<script type="text/javascript">
    /*globals jQuery, window, Sys */
    (function ($, Sys) {
        function setUpLogin() {
            var actionLinks = $("a#dnn_ctr<%#ModuleId%>_Login_Login_DNN_cmdLogin");
            actionLinks.click(function () {
                if ($(this).hasClass("dnnDisabledAction")) {
                    return false;
                }

                actionLinks.addClass("dnnDisabledAction");
            });
        }

        $(document).ready(function () {

            $('.dnnLoginService').on('keydown', function (e) {
                if (e.keyCode === 13) {
                    var $loginButton = $('#dnn_ctr<%#ModuleId%>_Login_Login_DNN_cmdLogin');
                    if ($loginButton.hasClass("dnnDisabledAction")) {
                        return false;
                    }

                    $loginButton.addClass("dnnDisabledAction");
                    eval($loginButton.attr('href'));
                    e.preventDefault();
                    return false;
                }
            });

            setUpLogin();
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () {
                setUpLogin();
            });
        });
    }(jQuery, window.Sys));
</script>

登录按钮的最终ID为dnn_ctr3927_Login_Login_DNN_cmdLogin,但最终的jQuery会吐出dnn_ctr_Login_Login_DNN_cmdLogin,导致上面的代码无法正常工作。

如何在不进行硬编码的情况下获取正确的模块ID?

1 个答案:

答案 0 :(得分:2)

我认为这是一个错误。我将#ModuleId替换为= ModuleId,它似乎可以工作。 我建议你在/DesktopModules/AuthenticationServices/DNN/Login.ascx文件中尝试这个修改。