0

也许标题不是很清楚。

想象一下,我在剃刀视图中有两列。

其中一列显示以下列表。

    @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。

然后,第二列称为SelectedItems,其目的是当您单击第一列的链接时,将项目添加到第二列。

我想用 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 将项目添加到第二列?

4

1 回答 1

0

一种方法是定义一个 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 回答