C# MVC 4 RAZOR - JSON 使用 @foreach 从控制器返回列表到视图
Posted
技术标签:
【中文标题】C# MVC 4 RAZOR - JSON 使用 @foreach 从控制器返回列表到视图【英文标题】:C# MVC 4 RAZOR - JSON return List from Controller to View using @foreach 【发布时间】:2017-08-12 11:56:36 【问题描述】:我是 MVC 4 Razor 的新手,因为我正在深入研究它,我在想,是否可以将 ActionResult 中的 JSON 列表传递给 View?
这是我在 Controller 中的代码:
public ActionResult Index()
User _user = db.Users.ToList();
return Json(_user , JsonRequestBehavior.AllowGet);
这是我在 View 中的代码:我想将我的 JSON 放入 @foreach
@model IEnumerable<MVC_AjaxActionLink.Models.User>
<body>
<input id="txtUser_Idx" type="text" />
<input id="btnSend" name="btnSend" type="button" value="Search" />
<div id="User_Result">
@foreach (var item in Model)
<table>
<tr>
@html.HiddenFor(modelItem => item.User_Idx)
<td>@Html.DisplayFor(modelItem => item.LoginName)</td>
<td>@Html.DisplayFor(modelItem => item.FirstName)</td>
<td>@Html.DisplayFor(modelItem => item.MiddleInitial</td>
<td>@Html.DisplayFor(modelItem => item.LastName)</td>
</tr>
</table>
</div>
</body>
这是我的 SQL 表:
USE [Sample_db]
GO
CREATE TABLE [dbo].[Users](
[User_Idx] [bigint] IDENTITY(1,1) NOT NULL,
[LoginName] [nvarchar](20) NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[MiddleInitial] [nvarchar](10) NULL,
[LastName] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
(
[User_Idx] ASC
))
GO
【问题讨论】:
如果您返回 JSON 对象,您将需要使用 Jquery 处理它并在视图上呈现它。 先生,我试过了,但在这里我使用 ajax 很难格式化设计 先生更新了我的 ajax 帖子 当然可以,但是您的方法返回单个User
,而不是集合,因此很难理解您真正想要做什么。
而且由于_user
是一个集合,所以不能使用User_Idx = _user.User_Idx,
之类的代码。您实际上想要做什么 - 返回由 db.Users.ToList()
返回的所有 User
对象?
【参考方案1】:
您在这里混合了两种不同的技术。 Json 超过 Ajax 和 Razor。您不能将 Json 模型对象绑定到剃刀视图。它不是那样工作的。如果您想使用带有剃刀的服务器端渲染,那么您将模型对象传递给您的视图。
所以
public ActionResult Index()
User _user = db.Users.ToList();
return Json(_user , JsonRequestBehavior.AllowGet);
应该改成这个(假设你的razor view是Index.cshtml):
public ActionResult Index()
User _user = db.Users.ToList();
return View(_user);
另外,我建议您在控制器中使用 _users 而不是用户,因为您实际上返回的是用户集合而不是单个用户。
【讨论】:
以上是关于C# MVC 4 RAZOR - JSON 使用 @foreach 从控制器返回列表到视图的主要内容,如果未能解决你的问题,请参考以下文章
使用 MVC/Razor 传递 C# 变量以用于 Dygraph
使用 MVC5 C# 和 Razor 在局部视图中运行 javascript
Javascript、Razor/MVC3 中的 C# if 语句