【问题标题】:Load data in view based on ID in url (asp.net mvc)根据 url 中的 ID 加载视图中的数据(asp.net mvc)
【发布时间】:2014-08-28 22:48:29
【问题描述】:

我正在寻找一种方法来根据 URL 中的 ID 或名称从数据库中加载不同的数据。

例如:

这是视图的链接:

http://localhost:50830/CreateSale/Order

现在我想要这样的东西:

http://localhost:50830/CreateSale/Order/5
OR
http://localhost:50830/CreateSale/Order/Cookies

然后根据 ID (5) 或名称 (Cookies),控制器 CreateSale 将加载链接到 Order 视图中的 ID/名称的数据。对于每个 ID/名称,此数据将有所不同。

编辑

所以基本上我想要的是一种创建 URL 的方法,就像我展示的那样。因此,当我在浏览器中键入链​​接时,根据最后一部分(5 或 Cookie),它应该在页面上显示所需的数据。

例如:

如果链接是:

http://localhost:50830/CreateSale/Order/Cookies

然后我想在页面上查看有关订购 cookie 的数据。

当链接是:

http://localhost:50830/CreateSale/Order/Toys

然后我想在页面上查看订购玩具的数据。

有没有办法在asp.net mvc4中做到这一点?

谢谢!

【问题讨论】:

    标签: c# asp.net-mvc url controller


    【解决方案1】:

    这应该使用默认路由开箱即用。在控制器方法上读取 Id 并将其传递给从数据库读取的方法,然后将结果传递回视图。

    public ActionResult Order(string id)
    {
        var data = DbLoader.Execute(id);
        return View(data);
    }
    

    在您的视图中,读取您传递给它的数据。例如在 Index.cshtml 中。

    @foreach (var dataItem in Model)
    {
        //Display something
    }
    

    这假设您没有“CreateSale/Orders”的自定义路由,并且使用的是默认路由:

    routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
    

    如果您确实有“/CreateSale/Order”的自定义路由,请确保 URL 以“/{id}”结尾,就像默认路由一样。

    编辑

    要生成 url,请在视图或控制器中使用 Url.Action 方法。例如

    @Url.Action("Order", "CreateSale", new RouteValueDictionary { { "id","5" } }, Request.Url.Scheme, Request.Url.Host) //generates http://localhost:50830/CreateSale/Order/5
    
    @Url.Action("Order", "CreateSale", new RouteValueDictionary { { "id","Cookies" } }, Request.Url.Scheme, Request.Url.Host) //generates http://localhost:50830/CreateSale/Order/Cookies
    
    @Url.Action("Order", "CreateSale", new RouteValueDictionary { { "id","Toys" } }, Request.Url.Scheme, Request.Url.Host) //generates http://localhost/CreateSale/Order/Toys
    

    【讨论】:

    • 感谢您的回答,但有没有办法像我在帖子中显示的那样创建一个 URL。因此,当我在浏览器中键入链​​接时,根据最后一部分(5 或 Cookie),它应该是谁想要的数据。
    • 您是尝试创建链接还是尝试根据提供给浏览器的 url 显示数据?
    • 我正在尝试根据 url 显示数据,但我也在寻找创建此类链接的方法,一种在链接中放置 ID 或名称的方法。我编辑了链接,我希望它更清楚一点。
    • 如果您尝试在视图或控制器中生成链接,请使用 Url.RouteUrl 或 Url.Action 帮助器。我已经用代码编辑了我的答案来证明这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多