簡體   English   中英

如何從url訪問當前路由參數並在asp.net視圖頁面上引用它

[英]How to access current route parameter from url and reference it on a asp.net view page

我剛剛做了一條新路線:

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

該路線可以正常運行,但是我不知道如何引用當前使用的“ id”,因此我可以在我的“詳細信息”視圖頁面上為路線上的“ id”顯示正確的信息。

有關更多信息,我在基本的“示例”頁面上顯示數據庫中的用戶,每個用戶都有與之關聯的“ ID”,單擊其名稱后,它將抓取“ ID”並轉到/ example /詳細信息/ {我剛剛點擊的用戶ID}(有效),現在我需要知道如何顯示該路線的用戶信息。

控制器:

public ActionResult Details()
{
    var example = from a in db.Example
                  where a.ExamplePresent
                  orderby a.ExampleName
                  select a;
    return View(example.ToList());
}

視圖:

@model List<Example.Areas.ExamplePage.Models.Example>
@{
    ViewBag.Title = "Example Page";
}

如果您不想為此創建視圖模型,則可以通過元組將id參數和列表傳遞給視圖,並在視圖中引用它,如下所示:

public IActionResult Details(int id)
{

    var example = from a in db.Example
              where a.ExamplePresent
              orderby a.ExampleName
              select a;
    return View(Tuple.Create(id, example.ToList()));
}

視圖

@model Tuple<int, List<Example.Areas.ExamplePage.Models.Example>>

@{
    ViewData["Title"] = "Details";
}

<h2>id: @Model.Item1</h2>

您的示例列表是:

@Model.Item2

一種更合適的方法是為詳細信息視圖創建視圖模型,並通過視圖模型傳遞您的值:

視圖模型:

public class DetailsViewModel
{
    public int Id {get;set;}
    public IList<Example.Areas.ExamplePage.Models.Example> Examples {get;set;}
}

行動:

public IActionResult Details(int id)
{

    var example = from a in db.Example
          where a.ExamplePresent
          orderby a.ExampleName
          select a;
    return View(new DetailsViewModel{ Id = id, Examples = example.ToList() });
}

視圖:

@model DetailsViewModel

@{
    ViewData["Title"] = "Details";
}

<h2>id: @Model.Id</h2> // your list is @Model.Examples

暫無
暫無

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

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