又是我。
我试图在我的视图中呈现一个链接,但参数被呈现为查询参数。也就是说,我想:
http://mysite/Discussion/AddMessage?guid=12345&title=MyTitle
呈现为
http://mysite/Discussion/AddMessage/12345/MyTitle
我怎样才能做到这一点?
标记
又是我。
我试图在我的视图中呈现一个链接,但参数被呈现为查询参数。也就是说,我想:
http://mysite/Discussion/AddMessage?guid=12345&title=MyTitle
呈现为
http://mysite/Discussion/AddMessage/12345/MyTitle
我怎样才能做到这一点?
标记
是的,您可以使用RouteLink
在定义以下内容后,您需要Route
在 RouteConfig 中添加一个名称如下所示的新名称DefaultRoute
:-
routes.MapRoute(
name: "NewRoute",
url: "{controller}/{action}/{guid}/{title}",
defaults: new
{ controller = "Discussion",
action = "AddMessage",
guid = UrlParameter.Optional,
title = UrlParameter.Optional }
);
然后创建一个RouteValueDictionary
来添加你的路由值,然后使用RouteLink
扩展名从HtmlHelper
..渲染它
@{
var dict = new RouteValueDictionary();
dict.Add("guid", "someguid");
dict.Add("title", "sometitle");
}
@Html.RouteLink("LinkText", "NewRoute", dict);
生成的超链接将生成为
<a href="/Discussion/AddMessage/someguid/sometitle">LinkText</a>
尝试 RouteLink 扩展方法并发送必要的参数。