2013-03-08 76 views
0

我很新的ASP.net和最近從asp.net轉換到asp.net MVC項目。 我有一個asp.net MVC Url.Action的基本問題。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。一切安好。

但我的實際要求是這些參數名稱不應該暴露。它應該像 /Question/Answer/10/1

我不想在String.Format的幫助下手動設置此鏈接的格式,因爲我的網站可能放置在虛擬目錄中而不是默認網站。

+0

你可以試試這個http://www.codeproject.com/Articles/576514/AplusBeginner-splusTutorialplusonplusVariousplus – Abdul 2015-05-22 10:52:23

回答

0

因爲ActionLink將執行GET請求,所以這些值將始終在查詢字符串中。從詢問字符串中刪除questionId和響應的一種方法是使用表單對帶有questionId和響應參數的答覆操作執行POST。

其他選項是執行ajax請求並更新響應中的dom。