2012-01-08 6 views
-1

こんにちは、私はこのウェブサイトを初めて利用しているので、C#MVC3のコントローラーに問題がありました。メッセージボックスが保存されたとき

問題は、アプリケーションでアイテムを作成するときに非常に簡単な確認メッセージが表示されるようにすることです。 Ifステートメントを試しましたが、正しいコンテキストを取得できません。あなたは親切な人に感謝してくれますか?私のコード:

// 
    // POST: /News/Create 

    [HttpPost] 
    public ActionResult Create(BooksItem booksitem) 
    { 
     try 
     { 

      using (var db = new BooksForever2()) 
      { 
       db.NewsItems.Add(booksitem); 
       db.SaveChanges(); 
      } 


      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

私は本を追加することができますし、それが保存されますが、それはそれはそのが保存されたユーザーを示してメッセージが表示された保存したときに、私が欲しい罰金作品を作成します。私は試した:Viewbag.Message("Saved") しかし、これは動作しません。すべてのヘルプは本当にあなたが

答えて

5

ちょうどあなたのビューで、その後

TempData["Message"] = "Saved"; 

コントローラあなたにこれを追加ありがとうござい

を理解されるであろう:あなたのビューレベルで

@if(TempData["Message"] != null) 
{ 
    <p>@TempData["Message"].ToString()</b> @* or whatever element you need to show*@ 
} 

をあなたが何かを行うことができますメッセージ(おそらくjQueryでフラッシュしてください):

jquery: Flash messages

UPDATE:私はあなたがリダイレクトを行っているに気づいたので、私は、TempDataをとViewBagを置き換えViewBagが保持されません。その場合にはしかしTemDataは、あなたがその確認メッセージが表示されたいです

+0

それは私がチェックしていますnullの項目ではありません、私ははっきりと述べています私の質問は、私の追加がうまく動作し、私が望むのは、誰かが本を入力したときにメッセージが表示されたというメッセージが表示されたことです。 – user1137472

+0

コードが機能しない – user1137472

+0

メッセージボックスまたは何らかの種類メッセージはそれがすべて保存されていると言います – user1137472

0

でしょうか?すでに編集している編集フォームで、またはインデックス/リストページに戻ってください。あなたはindexアクション/ページにリダイレクトされている

は今、あなたのメソッドの最後に、:

return RedirectToAction("Index"); 

その結果は、インデックスページがロードされるということであり、それは完全に気づいていないだろうそれは何かが救われたことから来たものです。

2つのオプションは、次のとおりです。 1)現在のページに留まり、メッセージを表示します。あなたは既に述べたように同じようViewBagにそのメッセージを追加することができます。

ViewBag.Message = "Saved"` 

をし、このようにそれを表示します。

@if(ViewBag.Message != null) 
{ 
    <p>@ViewBag.Message</p> 
} 

をして、あなたはRedirectToActionを削除し、単にデフォルトのビューを返すことを確認してくださいそれ以外の場合は、まだインデックスページにジャンプします。

2)また、ユーザーをインデックスページに戻し、表示するメッセージを渡してから、インデックスページでそのメッセージを探すことができます。あなたはRedirectToActionを呼び出すときに、クエリ文字列パラメータを含める: "?.../yourControllerName /インデックスメッセージ=保存された" にリダイレクトされます ViewBag.Message

return RedirectToAction("Index", new { Message="Saved" }); 

を。そして、あなたはインデックスのアクションメソッドにこれを追加することができます。

if(!string.IsNullOrEmpty(QueryString["Message"])) 
{ 
    ViewBag.Message = QueryString["Message"]; 
} 

そして、あなたのインデックスビューで同じビューコードすることを含める:

@if(ViewBag.Message != null) 
{ 
    <p>@ViewBag.Message</p> 
} 
+0

私は両方の方法を試して返信してくれます – user1137472

+0

最初に2番目のオプションを試しましたが、ifステートメントがインデックスビューに配置されていて、テキストのように黒く表示されていません – user1137472

+0

そのテキストの書式をそれを表示します。 –

関連する問題