使用ClientScriptManager从代码中调用javascript函数

时间:2014-03-26 11:16:32

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

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

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

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

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); 

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

1 个答案:

答案 0 :(得分:0)

试试这个:

首先,在您的视图页面上,创建一个简单的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);