我想使用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)';
}
}
});
});
答案 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的强>
在下面的代码中。
$('#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。
您应该将模型信息从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);
}