1

我想使用 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)';
                }
            }
        });
    });
4

2 回答 2

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);
            }
        }
    });
});
于 2013-03-20T13:37:12.513 回答
2

HTML

单击按钮时,您可以在 HTML 中声明 Action 及其对应的 Controller 信息。您也可以将其设置为隐藏。

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

jQuery

在下面的代码中。

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

$('#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. 对于模型并将模型信息传递给 PopUp。

您应该从 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);
}
于 2013-03-20T15:49:31.797 回答