根据url中的ID在视图中加载数据(asp.net mvc)

本文关键字:数据 asp net mvc 加载 中的 url ID 视图 根据 | 更新日期: 2023-09-27 18:20:05

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

例如:

这是视图的链接:

http://localhost:50830/CreateSale/Order

现在我想要这样的东西:

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

然后,根据ID(5)或名称(Cookie),控制器CreateSale将加载与订单视图中的ID/名称链接的数据。每个ID/名称的数据都不同。

编辑

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

例如:

如果链接为:

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

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

当链接为:时

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

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

在asp.net mvc4中有什么方法可以做到这一点吗?

谢谢!

根据url中的ID在视图中加载数据(asp.net mvc)

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

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

在您的视图中,读取您传递给它的数据

@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方法。E.g

@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