2014-10-11 25 views
0

我在Shared文件夾中有一個名爲Form.cshtml的局部視圖。沒有任何行動和控制器。它位於Shared文件夾中,我只是在Home控制器中將其呈現在名爲Index的視圖中。如何在控制器內的文件夾中獲得部分視圖Html?

我發現的所有代碼都需要一個控制器上下文,但我沒有任何控制器。那麼我可以通過視圖物理地址或其他方式獲取Html嗎?

+0

可能有更多的方法,但這樣做的一種方式可能是[剃刀發生器](http://razorgenerator.codeplex.com/) – Silvermind 2014-10-11 07:00:18

+0

謝謝,但你可以請添加一些更多的細節,以顯示更突出的方式? – 2014-10-11 07:29:26

回答

1

在控制器中您必須這樣做

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(); 
      } 
+0

這將返回一個局部視圖。我需要一個控制器中的方法,它返回一個包含html的字符串共享文件夾內的部分視圖。 – 2014-10-11 06:20:50

+0

http://stackoverflow.com/a/2759898/4104866你可以使用它來渲染任何偏向字符串,我認爲任何控制器上下文將工作,因爲如果你有一個Ajax請求使用完整的路徑來查看 – 2014-10-11 06:22:25

+1

@HamidReza和你的內容類型是HTML這段代碼返回你的部分觀點html – 2014-10-11 06:23:09

1

所有你需要指定完整路徑,查看

首頁/ Index.cshtml

@Html.Partial("/Views/Shared/Form.cshtml") 

編輯

https://stackoverflow.com/a/2759898/4104866你可以用它來渲染任何部分字符串,。我想任何控制器上下文將工作,因爲使用完整路徑查看

+0

我更新問題標題。我想要在控制器中獲取它。 – 2014-10-11 06:16:03

+0

在控制器必須添加〜在查看地址「〜/ Views/...」 – 2014-10-11 06:17:23

+0

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

相關問題