我正在开发一个 MVC3 应用程序。
在我看来,我正在使用@Html.ActionLink 作为锚链接。一切正常。但是这些链接在链接中包含当前 url 的参数。
如果我当前的链接是http://localhost:25466/Blog/all/2
正在生成的操作链接是http://localhost:25466/Blog/Blog/shoes/2
在上面的链接中,实际上我没有做任何事情来在 url 中包含“2”。但它仍在被添加。
我的路线配置是
routes.MapRoute(
"Blog", "Blog/Blog/{tag}/{id}",
new { controller = "Blog", action = "Blog", tag = UrlParameter.Optional,id="1" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = "1" },
constraints: new { id = @"\d+" }
);
而我的行动是
public ActionResult All(int id)
{
var context = new BlogCore.DbContext.BlogContext();
var list = context.Get(id,20);
return View(list);
}
public ActionResult Blog(string tag,int id)
{
var context = new BlogCore.DbContext.BlogContext();
var list = context.Get(HttpUtility.UrlEncode(tag), id, 20);
return View("All", list);
}
这就是我使用 actionlink 生成锚链接的方式
@Html.ActionLink(blog.PostTitle, "Blog", "Blog", new { tag = blog.PostRewriteName }, null)
如何在操作链接中避免 2。
提前致谢。