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
뷰의 코드는 다음과 같습니다
여기 내 컨트롤러의 코드입니다. 하지만 뷰가 표시되면 뷰백 데이터의 올바른 초기 값이 표시되고 제출 단추를 누르면 컨트롤러의 코드가 제대로 실행되지만 뷰백은 이전 데이터를 표시합니다.
나는 인덱스 함수에서 줄을 제거하려고 시도했지만 차이가 없다 ... 실제로 인덱스 루틴에 중단 점을 넣었을 때 페이지가로드 될 때만 호출된다. 뷰 ("인덱스")를 반환하면 다시 호출되지 않습니다 – dot
내 함수에서 httppost 특성과 관련이 있습니까? 여기 내가 왜 그런지 생각해. 홈 페이지와 mvc 템플릿 프로젝트를 만들 때 기본적으로 생성되는 About 페이지를 재생 해 보았습니다. viewbag 값을 HTTPPOST 함수로 변경하는 함수를 변경하기 전까지는 viewbag를 사용하여 데이터를 앞뒤로 전달할 수 있습니다. 일단 그렇게하면 더 이상 작동하지 않습니다. – dot
헤이 @dot, 아마 당신은 TempData가 다른 HTTPRequests를 통해 당신이 본질적으로 리디렉션을하고있는 것으로 가정하기 때문에 ViewBag 대신에 TempData를 사용하려고 시도해야합니다. 그래도 여전히 리디렉션의 인덱스를 명중해야합니다. 작동하지 않는 –