有没有办法可以在MVC中为我的Ajax ActionResult添加额外的数据?
我希望我的控制器创建一个新的PartialView,然后向其添加额外的数据,然后可以在Ajax OnSuccess函数中获取。
我已经尝试使用我的自定义数据从控制器传回一个Json结果并在OnSuccess函数中使用它,但是,因为我只是传回我的自定义数据而没有HTML,Ajax UpdateTarget div现在去了因为Ajax用我的Json结果填充div而不是HTML。
我希望我的控制器能够发送回PartialView,以便更新我的UpdateTarget div,它还包含我自己的自定义数据,我可以在OnSuccess函数中使用。
任何帮助都将不胜感激。
由于 麦克
答案 0 :(得分:1)
您可以在控制器中使用以下方法:
public string UpdateDivWithContent()
{
var yourModel = ... //make custom data to create your partial
return RenderPartialViewToString("YourPartialViewName", yourModel)
}
我将此方法放入基本控制器:
protected string RenderPartialViewToString(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
{
viewName = ControllerContext.RouteData.GetRequiredString("action");
}
ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
使用手动ajax调用从您的视图中调用此操作,例如:
$.ajax({
url: '@(Url.Action("UpdateDivWithContent","YourControllerName")'
type: 'POST',
data: {
//some params to be passed to the controller
},
success: function (result) {
//result is an html string of your customized partial view
$("#yourDivId").html(result);
}
});