将ajax成功结果传递给局部视图

时间:2016-09-13 12:58:29

标签: jquery html ajax asp.net-mvc

我已经包含以下代码行,其中success函数中的结果包含[object Object]形式的必要数据(考虑结果具有[object object]形式的Name,Category和Description等属性])。

$.ajax({
        url: rootUrl + 'Admin/EditRSS',
        type: "GET",
        data: { FeedId: FeedId },
        dataType: 'json',
        success: function (result) {
            // do something here                
        },
        error: function () { alert("error") }

    });

现在我想在一个加载局部视图的jquery对话框中使用这个结果

$("#editFeedDialog").dialog({

    title: "Edit Feed",
    width: '60%'

}); 
<div id="editFeedDialog" style="display: none; background-color: aliceblue;" >

@Html.Partial("EditFeed",//pass result as model)

</div>

控制器

    [HttpGet]
    public ActionResult EditFeed(int FeedId)
    {

        using (DbContext dataContext = new DbContext())
        {
          var feedDetails = (from u in DataContext.FeedMaster
                        where u.FeedMasterId == FeedId
                        select u).FirstOrDefault();

            FeedMaster r = new FeedMaster();

            r.FeedMasterId = FeedId;
            r.FeedName = feedDetails.FeedName;
            r.FeedCategory = feedDetails.FeedCategory;
            r.FeedDescription = feedDetails.FeedDescription;
            return Json(r, JsonRequestBehavior.AllowGet);

        }


    }

我应该能够将它作为模型传递给我的局部视图,或者至少我应该可以在 我是ajax的新手。所以有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您无法将JavaScript数据传递到Razor方法。这两个在请求管道中完全不同的时间发生。也就是说,在服务器返回响应之前,Razor在服务器端运行,而在服务器返回响应之后,JavaScript在客户端运行。

如果要使用从AJAX调用返回的数据加载部分,请让AJAX端点返回部分而不是数据。然后,您不需要额外的步骤,只需将AJAX调用的HTML响应直接插入DOM即可。

答案 1 :(得分:0)

有两种方法可以实现:

  1. 以HTML格式返回结果。
  2. 将结果作为JSON返回。
  3. 由于您要返回JSON数据,因此以下代码应该是合适的。

    <强> JAVASCRIPT:

    $.ajax({
            url: @url.action('EditFeed','YourController'),
            type: "GET",
            data: { FeedId: FeedId },
            dataType: 'json',
            success: function (result) {
                $('#editFeedDialog').empty().html('<p>'+result.FeedName+'</p><p>'+result.FeedCategory+'</p><p>'+result.FeedDescription+'</p>');           
            },
            error: function () { alert("error") }
    
        });
    

    <强> HTML:

    <div id="editFeedDialog" style="background-color: aliceblue;"></div>