簡體   English   中英

根據URL中的ID在視圖中加載數據(asp.net MVC)

[英]Load data in view based on ID in url (asp.net mvc)

我一直在尋找一種基於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

然后,我想在頁面上查看有關訂購Cookie的數據。

當鏈接是:

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

然后,我想在頁面上查看有關訂購玩具的數據。

在asp.net mvc4中有什么方法可以做到這一點?

謝謝!

對於默認路由,這應該可以立即使用。 在控制器方法上,讀取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”的自定義路由,請確保該網址以“ / {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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM