Asp.net mvc 4 ASP.NET MVC如何创建基于路由的操作链接
与stackoverflow一样,您有Asp.net mvc 4 ASP.NET MVC如何创建基于路由的操作链接,asp.net-mvc-4,asp.net-mvc-routing,url.action,Asp.net Mvc 4,Asp.net Mvc Routing,Url.action,与stackoverflow一样,您有domain/questions/{id}/{title} 不管你实际发送的标题是什么,如果它不是问题的实际标题,它会自动执行一个永久的重定向302到规范url 这一切都很棒 我想知道的是他们是如何在问题列表上创建链接的。 因为拥有问题id不足以创建url 可以通过路由自动完成吗 必须实施某种大词典吗 是否将标题传递给列出问题的所有视图? 因此,您将得到如下结果:@Url.Action(“问题”,新的{id=item.QuestionId,title=ite
domain/questions/{id}/{title}
不管你实际发送的标题是什么,如果它不是问题的实际标题,它会自动执行一个永久的重定向302
到规范url
这一切都很棒
我想知道的是他们是如何在问题列表上创建链接的。
因为拥有问题id不足以创建url
可以通过路由自动完成吗
必须实施某种大词典吗
是否将标题传递给列出问题的所有视图?
因此,您将得到如下结果:@Url.Action(“问题”,新的{id=item.QuestionId,title=item.QuestionTitle.ToPrettyUrl())代码>在你的链接中
我必须创建一个类似于此的场景,我有点想知道是否有任何幕后魔法或解决方案,我现在想不起来。是的,无论何时渲染链接,都需要像指定标题一样指定标题
当然,您可以创建一个助手方法来创建这些链接,只需传入参数即可确保始终包含友好标题
至于重定向,StackOverflow执行301永久重定向,而不是302临时重定向
我的一般做法如下:
public ActionResult QuestionDetail(int id, string title)
{
var question = service.GetQuestion(id);
if(title != question.Title.ToPrettyUrl())
{
var redirUrl = string.Format("/question/{0}/{1}", id, question.Title.ToPrettyUrl());
return RedirectPermanent(redirectUrl);
}
return View(question)
}
Stackoverflow使用内部属性路由代码
类似于属性路由的功能
这也将在MVC5中提供