我在Form.cshtml
文件夹中有一个名为Shared
的部分视图。它没有任何动作和控制器。它位于Shared
文件夹中,我只是在Index
控制器中名为Home
的视图中呈现它。
我发现的所有代码都需要一个控制器上下文,但我没有任何控制器。那么我可以通过视图物理地址或任何其他方式获取Html吗?
答案 0 :(得分:3)
在控制器中你必须这样做
public ActionResult GetPartial()
{
var viewStr=RenderPartialToString("~/Views/Home/Partial1.cshtml",new object())
return content(viewStr);
}
// by this method you can get string of view -- Update
public string RenderRazorViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View,
ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
答案 1 :(得分:2)
您只需指定查看的完整路径
@Html.Partial("/Views/Shared/Form.cshtml")
https://stackoverflow.com/a/2759898/4104866你可以使用它来渲染任何部分字符串,我认为任何控制器上下文都可以工作,因为使用完整路径来查看