2011-12-17 5 views
1

MVC3を使用していますが、私の見解では次のコードブロックがあります。リダイレクトで「潜在的に危険な要求」が発生した場合、疑問符を含むURLを使用するのはなぜですか?

Response.Redirect(@Url.Action("index","home", new {error = "test"})); 

ので、私が期待するURLがhttp://marketurk.co.uk/?error=testですが、私が得る、私は潜在的に危険な要求を取得するように、このhttp://marketurk.co.uk/%3Ferror=testです。

誰も同じ問題を抱えていて、何が間違っているのか教えていただけますか?

UPDATE:以下のようにIは、コントローラメソッドに私のロジックを移動

public ActionResult Index() 
    { 

     if (!User.Identity.IsAuthenticated) 
      return RedirectToAction("index", "home", new { error = "test" }); 

     return View(); 
    } 

それはまだにリダイレクトhttp://marketurk.co.uk/%3Ferror=test

+0

この行@ Url.Action( "index"、 "home"、new {error = "test"})はリダイレクトの外で何を生成しますか? – gdoron

+0

これは/?エラー=テスト – Cem

答えて

3

これは、一般的に、私が言うと思いコントローラに行くだろうロジックです。プレゼンテーション目的でない限り、ビューにできるだけ少ないロジックを含める必要があります。

あなたのビューモデルを検証することができ、あなたのコントローラのアクションで

、それが無効だ場合は、内蔵のRedirectToAction使用する必要があります。%3Fにエンコード?として
、 によって:

public ActionResult SomeAction() 
{ 
    // build your viewmodel here // 

    if(/* viewmodel is invalid */) 
     return RedirectToAction("index", "Home", new { error = "test" }); 
    else 
     return View(/* your viewmodel */); 
} 
+0

+1絶対にコントローラコード –

+0

私はまだそれが%3Fを含む同じURLにリダイレクトしたことを行っています – Cem

1

回答が何かする必要がありますあなたはOnActionExecuting機能FOを使用している?

Response.Redirect(Html.Raw(Url.Action("index","home", new {error = "test"}))); 
0

を保つことができるHtml.Raw使用コントローラー?あなたのリクエスト後に別のコード行が原因で問題になった可能性はありますか?

関連する問題