Вызов функции JavaScript из кода с использованием ClientScriptManager
На странице _layout моего приложения MVC есть следующий тег script:
<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 записывается при закрытии окна, и теперь я хочу выпустить значки для курсов SCORM с помощью кода на C#, а не из вида браузера.
Как я могу вызвать OpenBadges.issue([myURL]) из кода, использующего ClientScriptManager. Я нашел метод RegisterStartupScript, но я не уверен, как получить значения типа, ключа и сценария. Я попробовал это:
ClientScriptManager csm = new ClientScriptManager();
csm.RegisterStartupScript(GetType(), "msgbox", "alert('SCORM BADGE HAS BEEN ISSUED FOR SUCCESSFUL COMPLETION');", true);
Но я не правильно определяю конструкторы
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);