2017-11-15 3 views
-1

私は、コントローラ(httppostない除外措置)

public ActionResult Index() {} 
public ActionResult Insert() {} 

[HttpPost] 
public ActionResult Insert() { 
    //some insert code 
    redirect to where you come from but exclude Insert page 
} 

と私は、例から、多分インデックスからページを挿入したりするつもりです

public ActionResult Example() {} 

他のコントローラの3つの作用を有しますHttpPostアクションにフォームを送信します。インデックスページまたはサンプルページにリダイレクトしようとしています(どのページから来たのかを見つけようとしています)。どのように達成することができますか(UrlReferrerはInsertページにリダイレクトされます)

+0

'リターンRedirectToAction( "インデックス")と同じ名前のパラメータを追加します'? – Shyju

+0

ああ、申し訳ありませんインデックスは別のコントローラにあります – Volkan

+0

'Return RedirectToAction(" Index "、" YourControllerName ")' – Shyju

答えて

1

あなたがする必要があることは、リクエストがどこから来ているかを追跡することだけです。それを行うには複数の方法があります。ここにある

insert GETアクションメソッドでは、UrlReferrerの値を読み取って、その値をビューに渡すことができます。このビューでは、フォーム内の非表示の入力内にその値を保持します。フォームが提出されたら、HttpPostアクションメソッドでこれを読んで、それにリダイレクトしてください。あなたのInsert HttpPostアクションで今すぐ

public ActionResult Insert() 
{ 
    ViewBag.ReturnUrl = Request.UrlReferrer; 
    return View(new InsertVm()); 
} 

とフォームで

@model InsertVm 
@using (Html.BeginForm("Insert", "Users")) 
{ 
    <input type="hidden" name="returnUrl" value="@ViewBag.ReturnUrl" /> 
    @Html.TextBoxFor(a=>a.EmailAddress) 
    <button type="submit">Send</button> 
} 

、あなたの隠された入力

[HttpPost] 
public ActionResult Insert(InsertVm model,string returnUrl) 
{ 
    // to do : Save data 

    if(!String.IsNullOrEmpty(returnUrl)) 
    { 
     return Redirect(returnUrl); 
    } 
    //fall back 
    return RedirectToAction("Index","Home"); 
} 
+0

私は方法を見つけました。挿入アクションでセッションへの参照を追加し、httppostで読み込みました。とにかく私はあなたも近くにいると思う。 – Volkan

+1

セッションはそれをずっと長く保ちます。 ViewBagはここではもっと理にかなっています。 –

+0

真。もう一つの選択肢は、あなたのビューモデルにプロパティを持ち、それを使うことです。私はViewModelよりもそれを好むだろう:) – Shyju

関連する問題