2016-10-11 16 views
0

私のHTMLページには、ページ上部のデフォルトの警告がすべての入力領域を埋めると書かれています。リロード時にC#を使用してHTMLページを変更します

<span style="color:gray" class="help-block">Please enter value for all input fields.</span> 

データベースにデータを追加するためのページです。 「追加」ボタンをクリックすると、C#コードにActionResultがリダイレクトされます。そしてこの中で、入力された入力値に応じて、私のコードはstuffをデータベースに挿入するか、またはページを追加して再ロードして、挿入に失敗することを意味します。それ以外の部分では

[HttpPost] 
public ActionResult InsertStuff(Stuff stuff) 
{ 
    if (stuffManager.InsertStuff(stuff)) 
     return RedirectToAction("ListStuffs", "StuffController"); //successfully inserted!! 
    else 
     return RedirectToAction("AddNewStuffForm", "StuffController"); //reload page, here is where i'd like to change warning in html 
} 

、私は同じAddNewStuffFormページをロードしたいのですが、私は私の警告がでて赤にグレーの色を変更したい:

<span style="color:red" class="help-block">Please enter value for all input fields.</span> 

私はそれを行う方法がわかりません私が推測したように、htmlelseの部分に私のC#コードの何かを送る必要がありますが、それをどうやって行うのか分かりません。私は実際にいくつかの研究を行い、いくつかのソリューションはPage_Loadのようないくつかの方法を使用するよう提案しています。しかし、私は実際には初心者レベルのhtmlであり、提供されるソリューションには問題があります。誰でも簡単に何をすべきか説明できますか?前もって感謝します。

+0

をRedirectToAction(できる)が、それは別のページに移動する必要があることをブラウザに指示します。これは、このようなことをするための最良の選択肢から遠く離れています。このアクションはどのように呼び出されますか?これはAJAXコールですか?次に、結果をjavascriptで処理する必要があります。 MVCでのみビューをレンダリングしますか?次に、返されたビューに適切にスタイルを適用します。あなたのデザインの詳細を指定する必要があります – Shocked

+2

これを行うにはさまざまな方法がありますが、他の部分のViewDataにチェック値を保存して、レンダリングビューのViewData値を再チェックしてスタイルを変更することができます。 "色:@(ViewData ["失敗 "])%;" class = "help-block">すべての入力フィールドに値を入力してください。 – Pranay

+0

@Pranay私は本当にあなたの答えに感謝しています!それは本当に助けになりました。私は半日を費やして考え出しました。あなたは私の左半分の日を救ったのです。 –

答えて

2

これを行うにはさまざまな方法があります。たとえば、次のようなViewDataにチェック値を格納できます。あなたの他の部分とビューをレンダリングする上のViewData値を再確認し、それに応じて自分のスタイルを変更、このような何か

<span style="color:@(ViewData["fail"])%;" class="help-block">Please enter value for all input fields.</span> 

ありがとう:)

0

あなたは正しい線に沿っているようです。

  • 通常は、成功 POST後に新しいページへのリダイレクトを行うだろう。
  • POSTに失敗した後、 POSTは同じページに残り、適切なエラーを表示します。これはあなたが現在間違っているところです。

したがって、エラーの後でリダイレクトするのではなく、代わりに現在のページを返すことができます。あなたの最初のページを生成するために使用しているコードを見ることなく、私はそれがあなたのケースのようになります正確に何を知りませんが、それは一般的のようなものです:ここで三番目のパラメータは、あなたのオリジナルモデルです

[HttpPost] 
public ActionResult InsertStuff(Stuff stuff) 
{ 
    if (stuffManager.InsertStuff(stuff)) 
     return RedirectToAction("ListStuffs", "StuffController"); //successfully inserted!! 
    else 
     return View("AddNewStuffForm", "StuffController", stuff); //reload page, here is where i'd like to change warning in html 
} 

- この一般に、ユーザが入力した値でページを再配置するために使用することができる。

私は通常、また、第1のユーザ入力を検証するだろう - ASP.Net MVCで、あなたは以下のようにViewDataを記入ModelState.IsValid

-1

のチェックのようなものを使用することがあります:

[HttpPost] 
public ActionResult InsertStuff(Stuff stuff) 
{ 
    if (stuffManager.InsertStuff(stuff)){ 
     return RedirectToAction("ListStuffs", "StuffController");//successfully inserted!! 
ViewData["PageMessage"] = "The message you want to print in case of success";  
} 
     else{ 
      return RedirectToAction("AddNewStuffForm", "StuffController"); //reload page, here is where i'd like to change warning in html 
ViewData["PageMessage"] = "The message you want to print in case of fail"; 
} 
    } 

を次にViewDataにあなたのメッセージを印刷します

<p style="color:red;">@ViewData["PageMessage"]</p> 
+0

ViewDataの使用は質問のコメントで提供されています。私の場合、警告テキストではなく、ViewDataで色を維持することができます。ご回答有難うございます。 –

+0

私はこの答えを書いた後、それがコメントであることに気付きました。私はそれが助けてうれしいです。 –

+1

よろしくお願いします。 Fyi、私はdownvotedしていない。 –

関連する問題