0

私は eLearning システムを作成しました。現在、Rustici が作成した Javascript ライブラリを使用して tincanapi を統合しようとしています。MVC コントローラーから JavaScript メソッドを呼び出すことができるかどうか疑問に思っています。Web ビューで、次のコードを使用して tincan ステートメントを作成します。

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

2 に答える 2

1

この場合に使用するのに適した TinCan.NET ライブラリが (現在) あります。そうすれば、JavaScript でクライアント側から呼び出すのではなく、コントローラーから直接 LRS を呼び出すことができます。そのライブラリに関する情報は、次の場所にあります。

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

他のライブラリのリストについては、以下をご覧ください。

http://tincanapi.com/libraries

于 2014-06-06T14:38:52.630 に答える
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 呼び出しを使用するのが最適です。

于 2014-01-20T20:58:07.100 に答える