【问题标题】:Calling javascript function from within code using ClientScriptManager使用 ClientScriptManager 从代码中调用 javascript 函数
【发布时间】:2014-03-26 11:16:32
【问题描述】:

我的 MVC 应用程序的 _layout 页面中包含以下脚本标记:

<script src="https://backpack.openbadges.org/issuer.js"></script>

这用于在完成课程时颁发徽章。到目前为止,我一直在使用 javascript 直接从视图发布徽章,例如:

var postData = {
  'badgeClassID': 1
};

$.ajax({
  type: "GET",
  cache: false,
  url: "/Admin/NewBadgeAssertion",
  data: postData,
  success: function (dataBA) {
     var myURL = dataBA;
     OpenBadges.issue([myURL]);
  },
  error: function (error) {
     alert("An Error has occurred during the Issue of this OpenBadge");
  }
});

这适用于我创建的电子学习课程,但 SCORM 课程的完成记录在窗口关闭时,我现在想通过 C# 代码而不是浏览器视图为 SCORM 课程颁发徽章。

如何使用 ClientScriptManager 从后面的代码调用 OpenBadges.issue([myURL])。我找到了 RegisterStartupScript 方法,但我不确定如何派生类型、键和脚本值。我试过这个:

ClientScriptManager csm = new ClientScriptManager();
csm.RegisterStartupScript(GetType(), "msgbox", "alert('SCORM BADGE HAS BEEN ISSUED FOR SUCCESSFUL COMPLETION');", true); 

但我没有正确定义任何构造函数

【问题讨论】:

    标签: c# asp.net-mvc-4 clientscript clientscriptmanager openbadge


    【解决方案1】:

    试试这个:

    首先,在您的视图页面上,创建一个简单的 javascript 函数,它会执行您需要它执行的操作,例如调用 OpenIssues.issue:

    function myFunction(myUrl)
    {
        alert('test:' + myUrl);
        OpenBadges.issue(myUrl);
    }
    

    并且在您的代码隐藏中,您可以调用 javascript 函数:

    String jscript = "myFunction('" + myUrl + "')"; //sending url as parameter
    Page.ClientScript.RegisterStartupScript(this.GetType(),"myscript",jscript,true);
    

    【讨论】:

      猜你喜欢
      • 2012-10-21
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 2014-05-16
      • 1970-01-01
      相关资源
      最近更新 更多