我在IdeasController
中有以下URL模板:
[Controller]
[Route("/gemeente/{municipalityName}/election/{electionId}/ideas/"Name = "Ideas")]
public class IdeasController : Controller
我也有这个Action
与路由模板:
[Route("theme/{themeId}/",Name = "GetTheme")]
public IActionResult GetTheme(int themeId)
{
Console.WriteLine("Get theme----------------------------");
IEnumerable<Idea> ideas = _ideasManager.GetIdeasByTheme(themeId);
GeneralTheme theme = _themeManager.GetGeneralTheme(themeId);
IdeasByThemeDto ideasByThemeDto = new IdeasByThemeDto
{
Ideas = ideas,
Theme = theme
};
ViewBag["Title"] = "Ideas by theme: " + theme.Name;
return View("IdeasByTheme", ideasByThemeDto);
}
如何生成URL到达视图中的gemeente/Dendermonde/election/1/ideas/theme/2
?
具体例子:
我有一个想法的集合,每个想法都有一个主题与themeId
。
我想生成一个URL,附加当前URL (/gemeente/{municipalityName}/election/{electionId}/ideas/
)和主题id (theme/{themeId}
),这基本上结合了两个(" idea "one_answers"GetTheme")模板。
在视图中:
@Url.RouteUrl("GetTheme22", new { themeId = Model.Theme.Id }) //empty string
注意:自治市名称和选举id也应该根据之前的请求动态插入。
给定所示的路由模板,您可以使用Url.RouteUrl
:
<a href="@Url.RouteUrl("GetTheme", new {municipalityName="Dendermonde", electionId=1, themeId=2})">Get Themes</a>
解析为
<a href="gemeente/Dendermonde/election/1/ideas/theme/2">Get Themes</a>
在ASP中路由到控制器动作。. NET Core -通过路由
生成url
MunicipalitName
和electionId
如何动态插入
该信息如何传递给视图取决于个人偏好和特定于用例的因素。
这里,下面从ViewBag
提取控制器模板参数,假设它是从前面的请求
中存储的。<a href="@Url.RouteUrl("GetTheme", new {
municipalityName=ViewBag["MunicipalitName"],
electionId=ViewBag["electionId"],
themeId=Model.Theme.Id})">Get Themes</a>
下面的代码假设所有内容都存储在Model
中<a href="@Url.RouteUrl("GetTheme", new {
municipalityName=Model.MunicipalitName,
electionId=Model.ElectionId,
themeId=Model.Theme.Id})">Get Themes</a>