asp.net mvc html.renderaction() 将生成完整的 HTML 文档

asp.net mvc html.renderaction() will generate full HTML document

如果有人能回答我以下问题,我将不胜感激:

所以也许我有两个控制器操作:

Public Class MyController

    Public Function GetMainView() As ActionResult
       Return View()
    End Function 'generates (main) view

    Public Function GetPartialView(ByVal myParameter As Integer) As ActionResult
       ViewBag.MyValue = "foo"
       If (myParameter = 101) Then
          ViewBag.MyValue = "bar"
       End If
       Return View()
    End Function 'generates partial view

End Class ' MyController

在主视图中我可以写

@Code
   Html.RenderAction("GetPartialView", New With {.myParameter = 101})
End Code

Html.Action("GetPartialView", New With {.myParameter = 101})

问题是,这将在原始 HTML 文档中生成一个完整的 HTML 文档(带有 html 和正文标签等等...)有效代码。 :-(

如果另一方面我试试

@Code
   Html.RenderPartial("GetPartialView", New With {.myParameter = 101})
End Code

Html.Partial("GetPartialView", New With {.myParameter = 101})

部分视图正确呈现 - 但我传递的参数被忽略(甚至没有输入该方法...),因此 ViewBag.MyValue 将产生 "foo"。 :-(

除了通过 AJAX 动态加载局部视图外,还有什么方法可以解决这个问题?

非常感谢!!!

您必须 return 一个 PartialView:

Public Class MyController

    Public Function GetMainView() As ActionResult
        Return View()
    End Function 'generates (main) view

    Public Function GetPartialView(ByVal myParameter As Integer) As ActionResult
        ViewBag.MyValue = "foo"
        If (myParameter = 101) Then
            ViewBag.MyValue = "bar"
        End If
        Return PartialView()  <<--
     End Function 'generates partial view

End Class ' MyController

您还可以显式地告诉分部视图的名称并传递其视图模型,例如:

Return PartialView("partial view name", model)