[英]refresh Json Partial View
我想刷新Json Partial View。 我正在嘗試使用這個:
$('#example123').load('@Url.Action("Rejestracja", "Logowanie")');
但是不正確。
$.ajax({
url: '@Url.Action("Rejestracja", "Logowanie")',
dataType: "json",
type: "POST",
async: false,
error: function () {
},
success: function (data) {
if (data.Success) {
var el1 = $('<div><strong style="color: black" id="example123">' + data.View + '</strong></div>');
$(el1).dialog(
{
modal: true,
title: '<div></div>',
minWidth: 340,
minHeight: 300,
buttons: {
'Zamknij': function () {
$('#example123').load('@Url.Action("Rejestracja", "Logowanie")');
$(this).dialog("destroy");
}
}
});
}
}
});
JSON部分視圖
[HttpPost]
public JsonResult Rejestracja()
{
bool dataCahnged = true;
var model = new Logowanie();
object view = this.RenderPartialViewToString("Rejestracja", model);
return Json(new { Success = true, dataCahnged, View = view });
}
(這項工作僅限第一次)
<script type="text/javascript">
$('#bladReje').hide();
$('#bladRejeText').hide();
$('#poprawnieReje').hide();
$('#poprawnieRejeText').hide();
</script>
示例(此工作僅限第一次)
<div id="ex"></div>
<script type="text/javascript">
$('#ex').text('sasasa');
</script>
有什么理由特別說你為什么用“POST”調用ajax?你沒有向服務器發送任何信息,所以這是我要改變的第一件事。 嘗試將其更改為GET。
在第二位,嘗試更改您的方法以使您的視圖html返回一個字符串。 我正在使用這種擴展方法,它工作得很好:
public static class JsonHelper
{
public static string RenderPartialView(this Controller controller, string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = controller.ControllerContext.RouteData.GetRequiredString("action");
controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
}
以下是有關如何使用它的示例:
public ActionResult GetClientList()
{
List<ClientModel> clientList = ClientRepository.GetClients();
return Json(new JsonMixedResult { Result = "success", ViewHtml = this.RenderPartialView("ClientList", clientList) }, JsonRequestBehavior.AllowGet);
}
最后,檢查返回Json語句的最后一個參數。 這允許您的客戶端代碼從您的Controller訪問返回的數據。 在這種情況下,是一個包含您的視圖html的Json對象。
希望這可以幫助
我不明白為什么你只是不返回PartialView ??? 我的意思是你的Json結果返回你的局部視圖,有2個額外的屬性表明成功,而且數據已經改變了,我猜這兩個看起來毫無意義。 你為什么不在你的行動中這樣做:
[AjaxOnly]
public PartialViewResult Rejestracja()
{
var model = new Logowanie();
return PartialView("Rejestracja", model);
}
然后你的ajax調用看起來像這樣:
$.ajax({
url: '@Url.Content("~/Logowanie/Rejestracja")',
dataType: "html",
type: "GET",
error: function () {
// Handle errors here...
},
success: function (html) {
$("#someDivOnYourPage").html(html);
}
});
這樣整個局部視圖將被放置在頁面上您選擇的div中...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.