我在Shared
文件夾中有一個名爲Form.cshtml
的局部視圖。沒有任何行動和控制器。它位於Shared
文件夾中,我只是在Home
控制器中將其呈現在名爲Index
的視圖中。如何在控制器內的文件夾中獲得部分視圖Html?
我發現的所有代碼都需要一個控制器上下文,但我沒有任何控制器。那麼我可以通過視圖物理地址或其他方式獲取Html嗎?
我在Shared
文件夾中有一個名爲Form.cshtml
的局部視圖。沒有任何行動和控制器。它位於Shared
文件夾中,我只是在Home
控制器中將其呈現在名爲Index
的視圖中。如何在控制器內的文件夾中獲得部分視圖Html?
我發現的所有代碼都需要一個控制器上下文,但我沒有任何控制器。那麼我可以通過視圖物理地址或其他方式獲取Html嗎?
在控制器中您必須這樣做
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();
}
這將返回一個局部視圖。我需要一個控制器中的方法,它返回一個包含html的字符串共享文件夾內的部分視圖。 – 2014-10-11 06:20:50
http://stackoverflow.com/a/2759898/4104866你可以使用它來渲染任何偏向字符串,我認爲任何控制器上下文將工作,因爲如果你有一個Ajax請求使用完整的路徑來查看 – 2014-10-11 06:22:25
@HamidReza和你的內容類型是HTML這段代碼返回你的部分觀點html – 2014-10-11 06:23:09
所有你需要指定完整路徑,查看
@Html.Partial("/Views/Shared/Form.cshtml")
https://stackoverflow.com/a/2759898/4104866你可以用它來渲染任何部分字符串,。我想任何控制器上下文將工作,因爲使用完整路徑查看
我更新問題標題。我想要在控制器中獲取它。 – 2014-10-11 06:16:03
在控制器必須添加〜在查看地址「〜/ Views/...」 – 2014-10-11 06:17:23
Kostina我試過三種類型的呼叫: RenderRazorViewToString(「〜/ Views/Shared/Form.cshtml」)=> SearchedLocations爲空。 RenderRazorViewToString(「Form」)=> SearchedLocation爲null。 RenderRazorViewToString(「Form.cshtml」)=> SearchedLocations(〜/ Views/Shared/Form.cshtml.cshtml,〜/ Views/Shared/Form.cshtml.vbhtml) – 2014-10-11 07:00:41
可能有更多的方法,但這樣做的一種方式可能是[剃刀發生器](http://razorgenerator.codeplex.com/) – Silvermind 2014-10-11 07:00:18
謝謝,但你可以請添加一些更多的細節,以顯示更突出的方式? – 2014-10-11 07:29:26