0

タイトルがわかりにくいかも。

カミソリ ビューに 2 つの列があるとします。

列の 1 つに、次のリストを表示します。

    @for (int i = 0; i < questions.Length; i++) {
        <tr>
            <td><span>@i</span>.</td>
            <td class="questionText">@Html.ActionLink(questions[i].QuestionText, "AddItemToAssignmentContent", new { itemId = "Q" + questions[i].Id })
        </tr>
    }

ご覧のとおり、それぞれに URL があります。

次に、2 番目の列が呼び出されSelectedItemsます。これの目的は、最初の列のリンクをクリックして、2 番目の列に項目を追加することです。

Ajax を使用してこれを実行したいのですが、今までそれを実装する方法がわかりません。

これがアクションです。

    public ActionResult AddItemToAssignmentContent(string itemId)
    {
        var list = Session["SelectedItems"] as List<CreateAssignmentSelectedItem>;

        CreateAssignmentSelectedItem item = new CreateAssignmentSelectedItem();
        item.Id = itemId;
        item.Display = itemId;
        item.Quantity = 5;

        list.Add(item);

        return PartialView("_SelectedAssignmentContent", list);
    }

AJAX を使用して 2 番目の列に項目を追加するには、何が欠けていますか?

4

1 に答える 1

0

これを行う 1 つの方法は、リンクのクリック イベントの実行時に呼び出される JavaScript 関数を定義することです。この関数は ajax を介してリクエストを非同期でコントローラー アクションに送信し、結果 (部分ビュー) を取得して div に入力します。

モックアップ機能

function addQuestionToList(questionId){
    var linkToControllerAction = ‘@Url.Content(….)’

    $.ajax({
        url: linkToControllerAction,
        type: ‘post’,
        data: { ‘itemId’: questionId }
    }).done(function(partialViewResult){
         $(‘#divHostingThePartialView’).html(partialViewResult);
    });
}

そして、この関数を各trのクリックイベントにフックし、質問の名前をレンダリングして、アクションリンクを置き換えます

于 2013-02-27T01:21:06.640 に答える