c# - 如何从 url 访问当前路由参数并在 asp.net 视图页面上引用它
问题描述
我刚刚做了一条新路线:
routes.MapRoute(
name: "example",
url: "{example}/{details}/{id}",
defaults: new { controller = "example", action = "Index", id = UrlParameter.Optional }
);
该路线运行良好,但我不知道如何引用我当前所在的“id”,因此我可以在我的“详细信息”视图页面上显示路线上所说的“id”的正确信息。
对于更多上下文,我有我的基本“示例”页面,我在其中显示来自数据库的用户,每个用户都有一个与他们关联的“ID”,当他们的名字被点击时,它会抓取所说的“ID”并转到 /example/ details/{user id I just clicked}(这可行)现在我需要知道如何显示所述路线的用户信息。
控制器:
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";
}
解决方案
如果您不想为这种情况创建视图模型,您可以通过 tuple 将 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
推荐阅读
- typescript - 如何强制这种类型识别子类型约束匹配?
- html - DIv 可见性:隐藏不起作用,控制可见性,而不修改元素的显示 - Bootstrap DIv 标签
- flutter - 1 个集团发出状态列表,而许多集团正在发出自己的状态
- jenkins - 如何从上游作业中的下游 Jenkins 作业获取滚动控制台输出
- postgresql - 在 Sequelize 中加入和限制多个关联
- python - 我无法在 gitpod 中为我的软件打开预览
- scala - 是否有 Scala 模式用于从一系列独立计算中收集错误消息?
- python - SciPy Delaunay三角剖分改变了单纯形的多个点,以实现参数的微小变化
- javascript - 动态生成json文件
- ios - 带有 MVVM 的 RxSwift,RadioButton 不起作用