请参阅 ASP.NET C# 中的 MVC 索引页面,使用 URL 中没有 ID 的模型中的数据进行填充

See ASP.NET MVC Index page in C# be populated with data from model without ID in the URL

在我的应用程序中,我在 C# 中使用 Entity Framework 6 和 ASP.NET MVC。

我有一个 table,其中包含我计划用于填充我的索引页面的记录。如何在不让系统将记录的 ID 添加到 URL 的情况下填充索引页。请参见下面的示例。我已经查看了路由,但是通过添加自定义路由,您不得不向 url 添加更多文本,而我只想让 URL 显示为 example.com。我不想也不需要 example.com/MenuRecords/Details/20 让用户看到。

所以 example.com 应该在 HomeController 的索引视图中从下面的模型加载以下数据。

index.cshtml页面调用模型数据如下:

@model example.Models.tblMenuRecords

@Model.ThisWeeksBestDrink
@Model.ThisWeeksBestAppetizer
@Model.ThisWeeksBestDesert
@Model.ThisWeeksBestLunchSpecial

这是控制器操作方法:

public ActionResult Index()
{
    return View();
}

如何让它在 Index 页面上正常工作?因为这是从模型调用数据的主页,所以我不能让 URL 除了 example.com 之外的任何东西......但我确实理解,当从模型调用数据时,你确实需要一些有点像 ID,但我真的不明白该怎么做。

我知道有一个包含此默认路由的路由配置,它允许您仅显示域名...但是当您尝试从数据库加载数据时,这是如何完成的。

routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }

这是将 tblMenuRecords 的实例传递给视图的正确方法吗?

public ActionResult Index()
{
    tblMenuRecords tblMenuRecords = db.tblMenuRecords();

    return View(tblMenuRecords);
}
        I think your view is missed with model. View code should be like below
        @model Models.MenuRecords
        @{
            ViewBag.Title = "Menu Records";
        }
        
        <h2>Details</h2>
        
        <div>
            <h4>Menus</h4>
        <hr />
        <table>
            <tr>
                <td>
                    @Html.DisplayFor(model => model.ThisWeeksBestDrink)
                </td>
                 <td>
     @Html.DisplayFor(model => model.ThisWeeksBestLunchSpecial)
       </td>
            </tr>
        </table>
        </div>
I hope, it will help you. 

我认为你必须修正这个动作

public ActionResult Index()
{
    tblMenuRecords tblMenuRecords = db.tblMenuRecords.FirstOrDefault();

    return View(tblMenuRecords);
}