我有一个看起来像这样的动作结果:
public ActionResult Comment(int id)
{
var news = re.GetNewsByID(id);
NewsViewModel model = new NewsViewModel();
model.Description = news.Description;
model.Imageurl = news.Image;
model.link = news.Link;
model.PubDate = news.Date;
model.Title = news.Title;
return View(model);
}
并在我声明的视图中:
@Html.ActionLink("Comment", "Comment", new { id = item.Title })
当我点击actionlink时,我会看到以下网址:
Home/Comment/403
但我希望它以item.title结束。
这样的事情:
Home/Comment/403/What-ever-the-item-title-contains
我怎样才能做到这一点?
答案 0 :(得分:1)
我会在我的路线集合中首先映射该路线:
routes.MapRoute(
name: "Title",
url: "{controller}/{action}/{id}/{title}",
defaults: new { controller = "Home", action = "Index", id = 0, title = UrlParameter.Optional }
);
确保此路线映射到您的默认路线。一旦你有了这个,那就做:
@Html.ActionLink("Comment", "Comment", new { id = item.Id, title = item.Title })
就此而言,您可能只想让您的默认路线看起来像我上面的路线。不需要2条路线,因为ID和标题都是可选的。
答案 1 :(得分:0)
我从来不知道如何从Html.ActionLink
开始,我总是这样使用Url.Action
:
<a href="@Url.Action("Comment", new { id = item.Title })/@theTermToAddHere">Comment</a>
注意href中的“/”是标记(不是Razor代码的一部分),然后我追加附加术语。