C# 基于url中的ID加载视图中的数据(asp.net mvc)

C# 基于url中的ID加载视图中的数据(asp.net mvc),c#,asp.net-mvc,url,controller,C#,Asp.net Mvc,Url,Controller,我正在寻找一种基于URL中的ID或名称从数据库加载不同数据的方法 例如: 这是指向视图的链接: http://localhost:50830/CreateSale/Order 现在我想要这样的东西: http://localhost:50830/CreateSale/Order/5 OR http://localhost:50830/CreateSale/Order/Cookies 然后基于ID(5)或名称(Cookies),控制器CreateSale将加载与订单视图中的ID/名称链接的数据

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

例如:

这是指向视图的链接:

http://localhost:50830/CreateSale/Order
现在我想要这样的东西:

http://localhost:50830/CreateSale/Order/5
OR
http://localhost:50830/CreateSale/Order/Cookies
然后基于ID(5)或名称(Cookies),控制器CreateSale将加载与订单视图中的ID/名称链接的数据。对于每个ID/名称,此数据将不同

编辑

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

例如:

如果链接是:

http://localhost:50830/CreateSale/Order/Cookies
http://localhost:50830/CreateSale/Order/Toys
然后我想在页面上查看有关订购cookie的数据

当链接为:

http://localhost:50830/CreateSale/Order/Cookies
http://localhost:50830/CreateSale/Order/Toys
然后我想在页面上查看有关订购玩具的数据

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


谢谢

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

public ActionResult Order(string id)
{
    var data = DbLoader.Execute(id);
    return View(data);
}
在视图上,读取传递给它的数据。e、 g在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帮助器。我已经用代码编辑了我的答案来演示这一点。