【问题标题】:Pass ajax success result to a partial view将 ajax 成功结果传递给局部视图
【发布时间】:2017-01-21 02:17:55
【问题描述】:

我已经包含了以下代码行,其中成功函数中的结果包含[object Object]形式的必要数据(考虑结果具有[object Object]形式的名称,类别和描述等属性])。

$.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的新手。那么有人可以帮我解决这个问题吗?

【问题讨论】:

  • 对 ajax 的 success 执行 $("#editFeedDialog").html(result); 并返回将返回 Html 内容的 PartialView。
  • 因为结果是[object Object]的形式,所以我想要的是类似

    result.Name

    result.Category

    result .Description

    @ParthTrivedi
  • 请在此处写下您的控制器操作 cdoe。
  • 然后创建 html 并附加我提到的$("#editFeedDialog").html(your html);
  • 我已经编辑了我的问题并添加了控制器代码@ParthTrivedi

标签: jquery html ajax asp.net-mvc


【解决方案1】:

您不能将 JavaScript 数据传递给 Razor 方法。两者在请求管道中发生在完全不同的时间。即 Razor 运行在服务器端,在服务器返回响应之前,而 JavaScript 运行在客户端,在服务器返回响应之后。

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

【讨论】:

    【解决方案2】:

    有两种方法可以实现:

    1. 以 HTML 格式返回结果。
    2. 以 JSON 格式返回结果。

    由于您要返回 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 2011-09-19
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多