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

MVC3.0 中Razor 学习

Javascript、Razor/MVC3 中的 C# if 语句

APS.NET MVC + EF (04)---路由和数据传递

动态读取输入 Razor MVC C#