2010-12-02 22 views
0

MVCの初心者の前にプロンプ​​トをユーザーに警告することができます。MVC +どのように私はここで、コントローラのアクション

私は

私のコード(レコードを更新)コントローラのアクションの前にユーザーに確認を取得したい:

[HttpPost] 
    public ActionResult JobHandlerUpdate(int jobScheduleId, JobHandlerList jobHandlerList) 
    { 
     var updateJobHander = new MainJobHandler(); 
     var item = updateJobHander.GetById(jobScheduleId); 
     if (ModelState.IsValid) 
     { 
      List<string> days = jobHandlerList.JobProcessDayOfWeek.Split(',').ToList(); 
      updateJobHander.Update(item, days); 
      if(jobHandlerList.MaxInstances == 0) 
      { 

       // here I need to prompt user if maxInstances entered is Zero- 
        Job will be disabled want to processs (Y/N) if yes update 
        else do nothing or redirect to edit screen 
      } 
      return RedirectToAction("JobHandler"); 
     } 

     return View(item); 
    } 

iはjavascriptのアラートを使用して行う必要がありますか? または良い方法があります。

答えて

3

おそらく、onClickイベントハンドラで行うことができます。

<input type="submit" onclick="return confirm('Are you sure you wish to submit?');" /> 

お使いのコントローラのコードがサーバー上で実行されるので、あなただけ、クライアント側のプロンプトを行うことができ、その当然のクライアントがアクセスすることはできません。あなたがしたくない(またはすることはできません)それを2段階のプロセスを作る、JavaScriptを使用している場合

1

:あなたが検証つのアクションでは、確認を行うアクションにリダイレクトします。 確認アクションに渡す必要のあるデータは、TempDataまたはSessionに保存できます。

[HttpPost] 
public ActionResult JobHandlerUpdate(int jobScheduleId, JobHandlerList jobHandlerList) 
{ 
    var updateJobHander = new MainJobHandler(); 
    var item = updateJobHander.GetById(jobScheduleId); 
    if (ModelState.IsValid) 
    { 
     List<string> days = jobHandlerList.JobProcessDayOfWeek.Split(',').ToList(); 
     updateJobHander.Update(item, days); 
     if(jobHandlerList.MaxInstances == 0) 
     { 

      // Redirect to confirmation View 
      return View("JobUpdateConfirmation"); 
     } 
     return RedirectToAction("JobHandler"); 
    } 

    return View(item); 
} 

[HttpPost] 
public ActionResult JobUpdateConfirmation() 
{ 
     // Code to update Job here 
     // Notify success, eg. view with a message. 
     return RedirectToAction("JobHandlerUpdateSuccess"); 
} 

フォームは、確認を求め、バックJobUpdateConfirmationに掲示してビュー(JobUpdateConfirmation)が必要になります。 これは一般的な考えです。必要に応じてメッセージや手順を追加できます。

+0

CGK - あなたはcofimationをしてくださいませコントローラのアクションのいくつかのサンプルを置くことができます。 – Sreedhar

0

私は、これはUIフローの設計ではなく、コントローラ設計上の多くのだと思います。最初のコントローラに送信する前に、保留中の変更についてユーザーにプロンプ​​トを表示することは可能ですか?

私はジャバスクリプト/クライアント側の確認がここに理想的であると思うだろう。

あなたはCGKを提案し、ページを送信した後に、実際にレコードを更新する前にユーザーの確認を得るために、おそらく2番目のコントローラにリダイレクトするか、前のページにリダイレクトします。

は、私は他の回答が言おうと思っていたものにコメントを追加することを計画していたが、私は100%肯定することはできませんから、私はちょうど私がここで考えたものを書いたと思いました。

歓声:) ASPXで

1

<%= Html.ActionLink("link text", "ActionName", "ControllerName", new { actionMethodVariable = item.ID }, new { @onclick = "return confirm_dialog();" })%> 

<script type="text/javascript"> 
    function confirm_dialog() { 
     if (confirm("dialog text") == true) 
      return true; 
     else 
      return false; 
    } 
</script> 


//controller 

public ActionResult ActionName(int laugh) 
{ 
if (ModelState.IsValid) 
    { 
    //bla bla bla 
    } 

return something; 
} 
+0

カスタム確認ダイアログを作成する必要がある場合を除き、上記のjavascript関数を記述する必要はありません。 –

関連する問題