2011-12-20 15 views
0

フォーム上のボタンをクリックすると呼び出されるメソッドを持つコントローラがあります。 私のビューバック(htmlを含む文字列)内の変数を設定し、私はこのビューの内容を私のビューに表示しようとします。なんらかの理由で、ビューバックの内容が変更されません。ViewBagにHTMLを設定する

Function Index() As ActionResult 
     Dim TotalPSys As MyBusinessLayer.ListPSysAndMods = New ListPSysAndMods 
     ViewBag.HTMLForMods = "set" 
     ViewBag.Test = "123" 
     Return View(TotalPLC) 
    End Function 

    <HttpPost()> 
    Function ShowModulesForPSys(ByVal strPSysID As String) As ActionResult 
// .... do something.... 
     returnHTMLString = "<table><tr> <td>Show mods</td><td>Module Name</td></tr>" 
     For Each moduleitem In modulelist 
      returnHTMLString = returnHTMLString + " <tr> <td width='50%' style='background-color:#5c87b2'><font color='white'>Number:</font> </td><td>Html.DisplayFor(Function(x) " + moduleitem.SlotNumber + ")</td>" 
      returnHTMLString = returnHTMLString + "</tr><tr><td width='50%' style='background-color:#5c87b2'><font color='white'>RevNumber:</font></td> <td>Html.DisplayFor(Function(x) " + moduleitem.RevisionNumber + ")</td>" 
      returnHTMLString = returnHTMLString + "</tr><tr> <td width='50%' style='background-color:#5c87b2'><font color='white'>IP Address:</font></td><td>Html.DisplayFor(Function(x) " + moduleitem.ModuleIP + ")</td></tr>" 

     Next 
     returnHTMLString = returnHTMLString + "</table>" 
     'ViewData("HTMLForMods") = returnHTMLString 
     ViewBag.HTMLForMods = returnHTMLString 
     'MsgBox(ViewBag.HTMLForMods) 
     ViewBag.Test = "456" 
     MsgBox(ViewBag.Test) 
     Return RedirectToAction("Index") 

    End Function 

コードビューで次のようになります:

  <p>@Html.Raw(ViewBag.HTMLForMods)</p> 
     <p>@ViewBag.Test</p> 

システムは、コントローラのコード内のメッセージボックスが表示されたら、それは適切な値を表示します。ここ
は私のコントローラのコードがあります。しかし、ビューが表示されたら、ビューバックデータの正しい初期値が表示され、サブミットボタンを押すとコントローラのコードは正しく実行されますが、ビューバッグは古いデータを表示します。

答えて

1

インデックスにリダイレクトしているようですので、Viewbag.HtmlForModは、インデックスのアクションメソッドで定義されているものによって上書きされます。

+0

私はインデックス関数内の行を削除しようとしましたが、違いはありません...実際にはインデックスルーチンにブレークポイントを入れて、ページが読み込まれると一度だけ呼び出されます。ビュー( "index")を返すと再び呼び出されない – dot

+0

私の関数のhttppost属性と関係がありますか?私はそれが事実かもしれないと思う理由はここにあります。私はホームページとmvcテンプレートプロジェクトを作成するときにデフォルトで作成されたaboutページの周りを試してみました。これは、viewbagの値をHTTPPOST関数に変更する関数を変更するまで、viewbagを使ってデータを前後に渡すことができます。私がそれをしたら、それはもはや機能しません。 – dot

+0

ちょっと@dot、たぶん、あなたは本質的にリダイレクトでやっていることですが、TempDataは異なるHTTPRequests間で持続するはずですので、ViewBagの代わりにTempDataを使用するようにしてください。それは動作しません –

関連する問題