Проблема секвенирования MVC Scorm в отношении PartialView
Я работаю над проектом Scorm MVC. В основном мне нужно обновить частичное представление из файла класса CS.
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Table of Contents Test</h2>
<br />
<div id="SCONavBar">
<% XElement item = (XElement) Model;
String rootID = (String) ViewData["courseRoot"];
String resource = (String) ViewData["resource"]; %>
<button id="prev" onclick="javascript:NavigationRequest('', '<%: resource %>', 'previous');">Previous</button>
<button id="cont" onclick="javascript:NavigationRequest('', '<%: resource %>', 'continue');">Continue</button>
<button id="start" onclick="javascript:NavigationRequest('', '<%: resource %>', 'start');">Start Course</button>
</div>
<div id="scoContainer">
<div id="treeContainter" style="display:inline-block; outline:black solid 1px; height:600px; width:300px; overflow:scroll; padding:2px;">
<ul id="treeview">
<% Html.RenderPartial("~/Views/Content/ActivityTreeUserControl.ascx", item); %>
</ul>
</div>
<div id="contentContainer" style="vertical-align:top; display:inline-block; outline:black solid 1px;">
<% Html.RenderPartial("~/Views/Content/ContentFrame.ascx"); %>
</div>
</div>
<script type="text/javascript" src="../../Scripts/TreeView/TOCControlScript.js"></script>
<script type="text/javascript" src="../../Scripts/TreeView/resizeFrame.js"></script>
<script type="text/javascript" src="../../Scripts/Scorm/loungeScormMethods.js"></script>
<script type="text/javascript">
$(document).ready(function () {
startTree();
});
</script>
</asp:Content>
Выше приведен код для моей точки зрения. При первой загрузке он загружает частичное представление оглавления и частичное представление Iframe. При нажатии на мои личные кнопки Start, Cont и Prev AJAX-запрос проходит через секвенсор и возвращает ссылку на следующий фрагмент содержимого и обновляет источник iframe в javascript. Это отлично работает.
Javascript
function sendToFrame(source) {
window.frames.SCODisplay.location.href = source;
}
function NavigationRequest(id, resource, type) {
var result = null;
$.ajax({
type: 'POST',
url: '/Content/NavigationRequest/',
data: {type : type},
async: false,
success: function (data) {
result = data;
}
});
if (result != null && result != "") {
var source = "../Content/" + resource + "/" + result;
sendToFrame(source, id)
}
}
Теперь содержимое может иногда перемещаться с помощью кнопок внутри содержимого. Контент вызывает API-оболочку, которая отправляет в модель данных тот факт, что после его завершения должен следовать запрос продолжения. Который работает хорошо.
Теперь моя проблема заключается в том, что при завершении работы мои системы знают, что требуется запрос продолжения, они выясняют, что представляет собой следующий фрагмент контента, и его ссылку. Мне нужно найти способ обновить источник iframe отсюда....
public static String Terminate() {
//set entry to "" or resume, available to next learner session in current learner attempt
//if exit is set to suspend via nav request suspend all then entry set to resume upon next attempt on activity
//if exit anything other than suspend or no value set entry to ""
//when exit = suspend - save cmi.suspend_data to session
//decide whether to persist data
//save info to db using entities then call commit()
cocdType cmi;
try {
cmi = (cocdType)HttpContext.Current.Session["cmi"];
} catch {
return "false";
}
if (cmi.adlNavRequest != "_none_") {
SeqObject seqObj = new SeqObject();
seqObj.currentRequestType = SeqObject.type.Navigation;
seqObj.data.Navigation = cmi.adlNavRequest;
seqObj = loungeScormSeqNavHandler.SequencingProcess(seqObj);
NEED TO FIRE OFF IFRAME CHANGE SOURCE FROM HERE
}
return "true";
}
Имеет ли это смысл, любая помощь приветствуется.
1 ответ
Я придумал работу вокруг.
Моя функция завершения возвращает полную ссылку, необходимую для iframe, и в исходном вызове ajax у меня есть простой метод, который определяет, является ли результат истинным или ложным, пустым или нулевым, тогда это должна быть ссылка, а затем играть с ней оттуда. Затем установите результат в true или false после.