Вызов функции 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);
Другие вопросы по тегам