0

私は ASP.net を初めて使用し、最近 asp.net から asp.net MVC プロジェクトに変換しています。asp.net MVC Url.Action で基本的な質問が 1 つあります。

ActionResultコントローラーに2 つのパラメーターを持つ 1 つのメソッドと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}
            );

以下の構文から アクション Link in html page を呼び出す

@Html.ActionLink("Answer is 1", "Answer", "Question", null, null, null, new RouteValueDictionary(new {QuestionId = 10, Response = "1" }), null) 

/Question/Answer?QuestionID=10&Response=1 のように、この URL はルーティング定義に一致し、適切に Action を呼び出します。すべて順調。

しかし、私の実際の要件は、これらのパラメーター名を公開しないことです。/Question/Answer/10/1 のようになるはずです

String.Format私のサイトはデフォルトの Web サイトではなく、仮想ディレクトリ内に配置されている可能性があるため、このリンクを の助けを借りて手動でフォーマットしたくありません。

4

1 に答える 1

0

ActionLink は GET リクエストを実行するため、値は常にクエリ文字列になります。クエリ文字列から questionId と response を削除する 1 つの方法は、フォームを使用して questionId と response パラメーターを使用して POST to answer アクションを実行することです。

その他のオプションは、ajax リクエストを実行し、レスポンスで dom を更新することです。

于 2013-03-08T11:29:19.730 に答える