2014-01-20 70 views
0

我創建了一個電子學習系統,現在我正在嘗試使用Rustici創建的Javascript庫集成tincanapi,並且我想知道是否可以從MVC控制器調用JavaScript方法。在Web視圖創建使用下面的代碼tincan聲明:在其上工作這麼好,這麼好一個接受好友請求按鈕的點擊從MVC控制器執行JavaScript函數

<script type="text/javascript" src= "@Url.Content("~/Scripts/tincan.js")"></script> 
var tincan = new TinCan 
(
    { 
     recordStores: [ 
      { 
       endpoint: "https://cloud.scorm.com/tc/V4FF9VBCSY/", 
       username: "myusername", 
       password: "mypassword" 
      } 
     ] 
    } 
); 
function AcceptFriend(fullName,emailAddress) 
{ 
    tincan.sendStatement 
    (
     { 
      actor: { 
       name: "@Model.User.Forename" + " @Model.User.Surname", 
       mbox: "@Model.User.Email" 
      }, 
      verb: { 
       id: "http://adlnet.gov/expapi/verbs/answered", 
       display: { 
        "en-US": "accepted a friend request from" 
       } 
      }, 
      target: { 
       objectType: "Agent", 
       name: fullName, 
       mbox: emailAddress 
      } 
     } 
    ); 
}; 

此代碼調用。

但是現在我想跟蹤用戶上傳課程的時間,當然我可以在提交表單時做到這一點,但是這使我不確定上傳是否成功,所以我認爲最好是如果可能的話,這些調用控制器動作。這可以做到嗎?我怎麼能在這個代碼中調用類似的語句:

public ActionResult NewCampaign() 
    { 
     evm.GetCampaignTypes(); 
     evm.GetCampaignFormats(); 
     evm.GetCampaignTemplates(); 

     //Set ViewBag values. 
     ViewBag.UserID = evm.User.UserID; 
     ViewBag.NewMessageCount = evm.NewMessageCount; 
     ViewBag.PendingFriendRequests = evm.PendingFriendRequests; 
     ViewBag.NewFriendRequest = evm.NewFriendRequest; 
     ViewBag.NewFriendCount = evm.NewFriendCount; 
     ViewBag.UserForename = evm.User.Forename; 
     return View(evm); 
    } 

回答

0

你只能在返回時從控制器調用一個Javascript函數。例如:

JavascriptResult MyAction() 
{ 
    // Declare the purpose of the action 


    // The Javascript function 
    return JavaScript("YourJavaScriptFunction"); 

    // If you need parameters passed 
    // return JavaScript(String.Format("YourFunction({0},{1}), paramter1, parameter2);" 
} 

在這種情況下的JavaScript必須聲明你正在返回的功能,還可以通過從行動的任何參數代入函數,如果是服務於您的目的。

如果您需要將數據從客戶端綁定到控制器,最好使用AJAX調用。

1

有(現在)TinCan.NET庫,在這種情況下會更好用。這樣它可以直接從您的控制器調用LRS,而不是通過JavaScript從客戶端進行調用。您可以找到有關該庫在這裏的信息:

http://rusticisoftware.github.io/TinCan.NET/

對於其他庫的列表,請查看:

http://tincanapi.com/libraries

+0

乾杯布賴恩我意識到這一點,因爲我是積極開展活動有它更新 :) – Jay

相關問題