2011-12-20 2 views
0

폼의 단추를 클릭 할 때 호출되는 메서드가있는 컨트롤러가 있습니다. 내 viewbag (html이 포함 된 문자열)에 변수를 채운 다음이 뷰의 내용을 표시하려고합니다. 어떤 이유로 뷰포트의 내용이 변경되지 않습니다.ViewBag에 HTML 채우기

시스템 컨트롤러 코드에서 메시지 상자를 표시
  <p>@Html.Raw(ViewBag.HTMLForMods)</p> 
     <p>@ViewBag.Test</p> 

, 그것은 적절한 값을 표시

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 

뷰의 코드는 다음과 같습니다
여기 내 컨트롤러의 코드입니다. 하지만 뷰가 표시되면 뷰백 데이터의 올바른 초기 값이 표시되고 제출 단추를 누르면 컨트롤러의 코드가 제대로 실행되지만 뷰백은 이전 데이터를 표시합니다.

답변

1

색인으로 리디렉션하는 것처럼 보입니다. 따라서 Viewbag.HtmlForMod은 색인 작업 방법에 정의 된 내용으로 덮어 쓰게됩니다.

+0

나는 인덱스 함수에서 줄을 제거하려고 시도했지만 차이가 없다 ... 실제로 인덱스 루틴에 중단 점을 넣었을 때 페이지가로드 될 때만 호출된다. 뷰 ("인덱스")를 반환하면 다시 호출되지 않습니다 – dot

+0

내 함수에서 httppost 특성과 관련이 있습니까? 여기 내가 왜 그런지 생각해. 홈 페이지와 mvc 템플릿 프로젝트를 만들 때 기본적으로 생성되는 About 페이지를 재생 해 보았습니다. viewbag 값을 HTTPPOST 함수로 변경하는 함수를 변경하기 전까지는 viewbag를 사용하여 데이터를 앞뒤로 전달할 수 있습니다. 일단 그렇게하면 더 이상 작동하지 않습니다. – dot

+0

헤이 @dot, 아마 당신은 TempData가 다른 HTTPRequests를 통해 당신이 본질적으로 리디렉션을하고있는 것으로 가정하기 때문에 ViewBag 대신에 TempData를 사용하려고 시도해야합니다. 그래도 여전히 리디렉션의 인덱스를 명중해야합니다. 작동하지 않는 –

관련 문제