首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSON而不是视图模型

JSON而不是视图模型
EN

Stack Overflow用户
提问于 2016-05-04 16:38:50
回答 3查看 313关注 0票数 0

我最近完成了ASP.NET MVC的培训,我需要一些指导和好的建议。

如果我需要来自多个模型的数据,我已经学会了构建View Models,但最近我听说,与View Models相比,使用JSON对象并将对象作为模型返回给View更好,或者只是通过对ViewAJAX调用从Controller获取JSON对象的所有数据,然后在<代码>D9中使用jQuery显示数据。

这是不是当今最好的方式,而不是普通的View Models和在URL中包含POST/GET请求的刷新页面?

Controller中,我是创建一个JSON对象并用数据填充它,就像每个Model的列表一样,或者它是如何工作的?

EN

回答 3

Stack Overflow用户

发布于 2016-05-04 16:46:36

实际上我要看你的需要了。事实上,你所有的想法都是正确的,可以根据上下文的需要来使用。

例如,如果您需要直接执行CRUD操作,则可以只使用视图模型并绑定到表单。如果您需要更复杂的结构,您可以创建包含多个视图模型的复合视图模型,并且您仍然可以使用默认的model行为。此外,您还可以使用ViewBag/ViewData字典对象将数据传递给视图。

如果需要异步,可以使用AJAX (Get/Post)调用

票数 0
EN

Stack Overflow用户

发布于 2016-05-04 17:25:35

我可能是个守旧的人,但我尽可能多地使用view models。我通常做的是在控制器的操作方法中填充视图模型,然后将此视图模型传递给视图:

代码语言:javascript
复制
public async Task<ActionResult> Details(int brandId)
{
     BrandViewModel model = await brandTask.DetailsAsync(brandId);
     if (model == null)
     {
          throw new HttpException(404, "404");
     }

     return View(model);
}

有时候,我需要首先加载一个页面,然后通过返回JSON格式的数据来用数据填充某些控件。不久前,我在一个项目中工作,在表单加载后,我需要用JSON数据填充datatable

代码语言:javascript
复制
public ActionResult GetApplicationNotes(DataTableParameterViewModel parameterViewModel, int id)
{
     IEnumerable<Note> notes = noteService.FindAllByApplicationId(id);

     var result =
          from note
          in notes
          orderby note.Id descending
          select new[]
          {
               note.Body,
               note.CreatedDate.FormatDate()
          };

     return Json(new
     {
          sEcho = parameterViewModel.sEcho,
          iTotalRecords = notes.Count(),
          iTotalDisplayRecords = notes.Count(),
          aaData = result
     },
     JsonRequestBehavior.AllowGet);
}

这一切都归结为你需要在你的场景中实现什么。如果我不需要做任何花哨的事情,那么我总是会先使用视图模型。如果我需要更新网页的某些部分,那么我会做一个AJAX调用并返回JSON格式的数据。

票数 0
EN

Stack Overflow用户

发布于 2016-05-04 16:44:24

使用web api控制器而不是mvc控制器。

除非另行指定,否则Mvc控制器将返回呈现的视图。你不能在实体框架上返回对象,因为循环引用,所以你应该有dtos。

然而,web api控制器将这些操作与out dto一起使用。另外,你可以创建query string parameter,然后你会收到你的jsons

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37022543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档