C# 自定义路由在asp.net核心mvc中未命中?
我有一个样本.net核心mvc应用程序,即时通讯测试SEO友好的url创建, 这是张贴的 我已经创建了帖子中的所有代码 我的测试控制器操作如下C# 自定义路由在asp.net核心mvc中未命中?,c#,asp.net,asp.net-core-mvc,asp.net-mvc-routing,C#,Asp.net,Asp.net Core Mvc,Asp.net Mvc Routing,我有一个样本.net核心mvc应用程序,即时通讯测试SEO友好的url创建, 这是张贴的 我已经创建了帖子中的所有代码 我的测试控制器操作如下 public IActionResult Index(int id, string titl) { //string titl = ""; var viewModel = new FriendlyUrlViewModel() { Id = 1, Name = "Detail home vi
public IActionResult Index(int id, string titl)
{
//string titl = "";
var viewModel = new FriendlyUrlViewModel() { Id = 1, Name = "Detail home view." };
string friendlyTitle = FriendlyUrlHelper.GetFriendlyTitle(viewModel.Name);
// Compare the title with the friendly title.
if (!string.Equals(friendlyTitle, titl, StringComparison.Ordinal))
{
return RedirectToRoutePermanent("post_detail", new { id = viewModel.Id, title = friendlyTitle });
}
return View(viewModel);
}
我已经在startup.cs
app.UseMvc(routes =>
{
routes.MapRoute(
name: "post_detail",
template: "FriendlyUrl/index/{id}/{title}"
).MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
当我导航到
https://xxxxx:2222/FriendlyUrl/index/2/dfdsfdsfds
浏览器不显示任何内容,
我认为问题在于定制路线,但我找不到,
有人能帮忙吗
谢谢。您不必添加:
routes.MapRoute(
名称:“发布详细信息”,
模板:“FriendlyUrl/index/{id}/{title}”)
这适用于全局“控制器/操作”映射规则
相反,要将指定的路径映射到动作,请考虑添加这样的属性:
[路由(“FriendlyUrl/index/{id}/{title}”)]
公共IActionResult索引([FromRoute]int id,[FromRoute]字符串标题)
{
}
常见问题
如何使用路由名称重定向?
只需在路线中添加一个名称。像这样:
[Route(“FriendlyUrl/index/{id}/{title}”,Name=“post_detail”)]
公共IActionResult索引([FromRoute]int id,[FromRoute]字符串标题)
{
}
要从其他控制器或操作路由到此操作,请使用以下命令调用它:
//正在运行
返回重定向路由(“post_详细信息”);
//或
返回重定向路由永久(“post_详细信息”);
//我想你不必丢失“身份证”:
返回RedirectToRoutePermanent(“post_detail”,new{id=5});
如何允许接收空标题
只需向路线模板添加一个?
。像这样:
[Route(“FriendlyUrl/index/{id}/{title?}”,Name=“post_detail”)]
公共IActionResult索引([FromRoute]int id,[FromRoute]字符串标题)
{
}
我已经试过了。但我有两个问题1.如何使用RedirectToRoutePermanent 2.接收null以title@Roshan请再核对一下答案。