如何使用AJAX获取List的当前项?

时间:2013-02-23 14:50:33

标签: asp.net-mvc jquery asp.net-mvc-4

也许标题不是那么清楚。

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

其中一列显示以下列表。

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

如您所见,每个人都有一个网址。

然后,第二列被称为SelectedItems,这是当你在第一列的链接中clic时,将该项添加到第二列。

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

1 个答案:

答案 0 :(得分:0)

这样做的一种方法是定义一个javascript函数,该函数将在执行链接的click事件时被调用。该函数将通过ajax将请求异步发送到控制器操作,获取结果(部分视图)并填充div

模拟功能

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

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

并将此函数挂钩到每个tr的click事件,该事件会更改问题的名称,替换您的操作链接