ASP.net MVC Url.Action链接格式

时间:2013-03-08 11:06:41

标签: asp.net-mvc-4 url.action

我是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 Like / Question / Answer?QuestionID = 10& Response = 1,此url匹配路由定义并正确调用Action。一切都好。

但我的实际要求是不应公开这些参数名称。应该是这样的 /问题/答案/ 10/1

我不想在String.Format的帮助下手动格式化此链接,因为我的网站可能放在虚拟目录中,而不是默认网站。

1 个答案:

答案 0 :(得分:0)

因为ActionLink将执行GET请求,所以值将始终位于查询字符串中。从查询字符串中删除questionId和响应的一种方法是使用questionId和使用表单的响应参数对您的答案操作执行POST。

其他选项是执行ajax请求并更新响应的dom。