C# 当通过JSON返回时,是否可以将模型传递到部分视图中?
在我的web应用程序中,用户可以单击列表项,然后该列表项将向控制器发送AJAX请求,控制器将返回一个JSON项目列表:C# 当通过JSON返回时,是否可以将模型传递到部分视图中?,c#,ajax,asp.net-mvc,json,C#,Ajax,Asp.net Mvc,Json,在我的web应用程序中,用户可以单击列表项,然后该列表项将向控制器发送AJAX请求,控制器将返回一个JSON项目列表: return Json(new CategoryChildrenViewModel(){ CategoryItems = selectedCategoryItem.SubCategories }); 然后我有一个局部视图,用于列出返回的项目: @using Microsoft.AspNet.Identity; @mode
return Json(new CategoryChildrenViewModel(){
CategoryItems = selectedCategoryItem.SubCategories
});
然后我有一个局部视图,用于列出返回的项目:
@using Microsoft.AspNet.Identity;
@model Models.Category
<li class="treelistitem" data-id="@Model.CategoryId">
<div>
<i class="glyphicon glyphicon-folder-open rightfolderpadding"></i>@Model.CategoryName<span class="btn-group">
@if (ApplicationSettings.Default.RoleAllowEditCategories!="None" && (User.IsInRole(ApplicationSettings.Default.RoleAllowEditCategories) || User.IsInRole("Administator")))
{
<a href="@Url.Action("Edit", "0")" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i>Edit</a>
}
@if (ApplicationSettings.Default.RoleAllowDeleteCategories != "None" && (User.IsInRole(ApplicationSettings.Default.RoleAllowDeleteCategories) || User.IsInRole("Administator")))
{
<a href="@Url.Action("Delete", "0")" class="btn btn-xs btn-danger"><i class="glyphicon glyphicon-remove"></i>Delete</a>
}
</span>
</div>
</li>
是否可以将JSON返回的列表中的每个项目传递到部分视图中,以便它可以呈现包含每个返回项目的详细信息的项目?否,这将不起作用 当您返回JSON时,您将返回JSON,这是纯数据。您需要客户端代码Javascript来处理这些数据 包含部分视图的视图始终在服务器端执行,通常返回HTML 您要做的是:发出AJAX请求,但不要返回JSON。而是返回局部视图的ViewResult。这将在服务器上执行部分视图,AJAX调用者将收到一个HTML片段,然后您可以将其插入页面。您可以尝试以下方法:
public ActionResult ReturnSpecialJsonIfInvalid(AwesomenessModel model)
{
if (ModelState.IsValid)
{
if(Request.IsAjaxRequest()
return PartialView("NotEvil", model);
return View(model)
}
if(Request.IsAjaxRequest())
{
return Json(new { error=true, message = RenderViewToString(PartialView("Evil",model)}));
}
return View(model);
}执行html ajax调用并返回PartialViewName,选择CategoryItem,然后添加返回的内容,效果非常好。谢谢