【问题标题】:C# MVC 4 RAZOR - JSON return List from Controller to View using @foreachC# MVC 4 RAZOR - JSON 使用 @foreach 从控制器返回列表到视图
【发布时间】:2025-12-13 18:40:02
【问题描述】:

我是 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 对象?

标签: c# json asp.net-mvc asp.net-mvc-4 razor


【解决方案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 而不是用户,因为您实际上返回的是用户集合而不是单个用户。

【讨论】: