jquery – 部分视图与Json(或两者)

前端之家收集整理的这篇文章主要介绍了jquery – 部分视图与Json(或两者)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用ASP.NET MVC与jQuery,并有很多Ajax请求给我的控制器。

使用部分视图(usercontrols)在页面加载时构建初始视图。然后,如果我需要根据我的Ajax请求附加/替换数据,我从Json响应构建HTML。

这种方法给了我充分的控制,即。如果发生错误,我可以从控制器获取额外的信息,然后根据该信息显示错误消息。

然而,最近我一直非常讨厌在我的部分视图和从Json生成HTML的部分中维护HTML结构的所有额外工作。

我喜欢制作一个jQuery ajax请求,然后控制器返回PartialView(“mypartialview”),然后只需使用jQuery替换为视图中的HTML。

但是,这样我无法从控制器附加额外的数据 – 无论是部分视图给出的,还是没有。至少这是我现在接受的。

如果某些验证在我的控制器操作的某个时候出错,我不想返回部分视图的HTML。

那么你怎么处理这个问题呢?

谢谢阅读。

解决方法

基于 this stackoverflow anwser我刚刚开始做同样的事情。

首先为controller类创建一个扩展方法

public static string RenderViewToString(this Controller controller,string viewName,object model)
{
    using (var writer = new StringWriter())
    {
         var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext,viewName);
         controller.ViewData.Model = model;
         var viewCxt = new ViewContext(controller.ControllerContext,viewResult.View,controller.ViewData,controller.TempData,writer);
         viewCxt.View.Render(viewCxt,writer);
         return writer.ToString();
     }
}

然后在控制器操作方法中返回json。

return Json(new
                            {
                                Html = this.RenderViewToString("MyView",model),SomeExtraData = data
                            });

您的ajax请求现在将收到包含其中的html的json。仍然尝试使用这种方法返回纯平的Html片段。

希望有帮助。

编辑更新以与剃刀一起使用

原文链接:https://www.f2er.com/jquery/182405.html

猜你在找的jQuery相关文章