弹出JSON显示部分

时间:2013-03-20 11:46:16

标签: jquery asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

我想使用Ajax准备弹出窗口,但我不知道如何添加Partial(我有错误)

问题

window.location = '@Url.RenderPartial("DodajTemat", Model)';

所有例子:

$("#dodajTemat_U").click(function () {
        $.ajax({
            url: '@Url.Action("DodajTemat", "StronaGlowna")', 
            dataType: "json",
            type: "POST",
            async: false,
            error: function () {
            },
            success: function (data) {
                if (data.Success) {
                    window.location = '@Url.RenderPartial("DodajTemat", Model)';
                }
            }
        });
    });

2 个答案:

答案 0 :(得分:3)

如果您想显示弹出窗口/灯箱/叠加层,那么我建议正确的方法是使用HTML和CSS来创建它。

就部分视图而言,我会通过action方法返回此视图。创建一个返回此的AjaxResult类。

public class AjaxResult
{
    public string Html { get; set; }
    public bool Success { get; set; }
}

然后你的ajax结果看起来像这样

$("#dodajTemat_U").click(function () {
    $.ajax({
        url: '@Url.Action("DodajTemat", "StronaGlowna")', 
        dataType: "json",
        type: "POST",
        async: false,
        error: function () {
        },
        success: function (data) {
            if (data.Success) {
                $('body').append(data.Html);
            }
        }
    });
});

答案 1 :(得分:2)

<强> HTML

在按钮上单击,您可以在HTML中声明Action及其相应的Controller信息。你也可以将它隐藏起来。

<div id="MyDiv" Control-Url = "@Url.Action("ActionName", "ControllerName")"
                Action-Url = "@Url.Action("ActionName", "ControllerName")">
</div>

<强> JQuery的

在下面的代码中。

  1. 首先加载控件/弹出窗口。
  2. 获取控件/弹出窗口的信息

  3. $('#dodajTemat_U').click(function () {
        var MyDiv = $('#MyDiv');
        var url = MyDiv.attr('Control-Url');
        MyDiv.load(url, function () {
            url = MyDiv.attr('Action-Url');
            $.ajax({
                url: url,
                async: true,
                type: 'POST',
                beforeSend: function (xhr, opts) {
                },
                contentType: 'application/json; charset=utf-8',
                complete: function () { },
                success: function (data) {
                }
            });
        });
    });
    

    如果你注意,对于上面的代码,我正在获取两个Url。

    1. 用于加载的弹出/部分视图
    2. 对于Model并将Model信息传递给PopUp。
    3. 您应该将模型信息从Action Method发送到控件,而不是从javaScript发送。

      部分视图加载的控制器操作

      //For loading the Pop-Up or for the Partial View
      [HttpGet]
      public PartialViewResult YourActionName()
      {
          return PartialView("PartialViewName");
      }
      
      //For fetching the Model information and pass it to View.
      public JsonResult ActionForGetInformation()
      {
          return Json(Your Model Information goes here, JsonRequestBehavior.AllowGet);
      }