我对 ASP.net 非常陌生,最近从 asp.net 转换为 asp.net MVC 项目。我在 asp.net MVC Url.Action 中有一个基本问题。
我的控制器中有一个ActionResult
带有两个参数QuestionId, Response
的方法,路由配置如下,
public class QuestionController : Controller
{
public ActionResult Answer(int QuestionId, string Response)
{
..do something.....
}
}
和路由配置映射为
routes.MapRoute(
name: "QuestionAnswer",
url: "{controller}/{action}/{QuestionId}/{Response}",
defaults: new { controller ="Question", action = "Answer", QuestionId = 0, Response = string.Empty}
);
从以下语法调用 html 页面中的操作链接
@Html.ActionLink("Answer is 1", "Answer", "Question", null, null, null, new RouteValueDictionary(new {QuestionId = 10, Response = "1" }), null)
它形成 URL 就像 /Question/Answer?QuestionID=10&Response=1,这个 url 匹配路由定义并正确调用 Action。一切都很好。
但我的实际要求是这些参数名称不应该暴露。它应该像 /Question/Answer/10/1
我不想在 的帮助下手动格式化此链接,String.Format
因为我的网站可能放置在虚拟目录中,而不是默认网站。