2010-12-10 18 views
7

今天我一直在將一個相當新的項目從ViewPages移動到Razor,並且一切似乎都進展順利。除了我試圖使用Html.Action來呈現用戶控件,它不會呈現任何東西。Asp.Net MVC 3 - @ Html.Action不會渲染/返回任何HTML

所以我這是在主頁/ Index.cshtml

Index.cshtml引用的共享/ _Layout.cshtml文件有以下:在BlogsController

<article> 

@Html.Action("LatestBlogsMainPanelWidget", "Blogs") 

... 

</article> 

我放陷阱,所以我知道這是被要求。我也知道正在返回一個模型,查看引擎正在找到LatestBlogsMainPanelWidget,甚至還有一些虛擬的Razor語法代碼正在運行: @ { var s =「hello」; }

但是這個文件中的普通html沒有將它傳遞給瀏覽器。我也嘗試了其他(以前工作)的部分,他們也不會出現(頁面上的查看源確認它不存在)。

我也試過代替 @ {Html.RenderAction(...); } 沒有成功。 HTML Html.Action的任何一方都出現了,所以我知道Index.cshtml正常顯示。

更奇怪的是_Layout文件也有Html.Action命令,他們顯示正常。

我真的不知道還有什麼要檢查,或者如何確認管道正在獲取HTML。任何人都可以幫忙嗎?

謝謝!

+0

是對設在正確的地方,行動有何看法?沒關係,我只看到了我正在尋找的一條線。 – Buildstarted 2010-12-10 19:46:50

回答

1

大腦是一件很有趣的事情,儘管昨天花了幾個小時,但我的狗在半夜醒來的時候把我叫醒了一整夜,因爲我的潛意識偶然發現了答案。

如果這讓其他人難倒,我並不感到驚訝。我沒有提到,因爲我沒有想到我正在使用類似於Steve Sanderson設計的部分級緩存系統。它突然讓我感到這可能是原因,因爲據我所知,Razor頁面的處理比WebForm頁面少得多。緩存過濾器可能沒有做它需要做的事,或者在正確的時間。

我已確認在有問題的操作中註釋掉OutputCache過濾器已解決此問題。

我不知道這個問題是否屬於頁級緩存,因爲它不是我認爲有用的東西。

+0

Curiouser和curiouser。我剛剛安裝了MVC 3的RC2,部分級別的緩存再次運行,並且所有的html.actions都再次出現。那麼,對不起,麻煩了! – 2010-12-11 06:46:53

6

嘗試這種情況:

@ {Html.RenderAction( 「LatestBlogsMainPanelWidget」, 「博客」);}

+0

您可以在原始問題中看到我曾嘗試過。不管怎麼說,還是要謝謝你。 – 2010-12-16 06:42:46

8

放在局部視圖佈局= null,並且它將正常工作。

+0

正是我所需要的。這對我用[ChildActionOnly]屬性裝飾的動作非常有用。 – David 2011-02-06 01:45:17

+8

實際上,我剛剛瞭解到,而不是添加(在我的情況),我只需要切換返回視圖返回PartialView。 – David 2011-02-07 21:06:03

1

在爲這個問題尋找解決方案時,我發現了三個不適合呈現Html.Action和Html.RenderAction的度量問題。請確認你是否正確地完成了下面的事情。

  1. 在你PartialView或查看已定義@ {佈局= NULL;}
  2. 使用退貨部分查看而不是查看
  3. 裝飾與[ChildActionOnly]屬性你的行動。

我希望通過應用上面可以解決你的問題的所有步驟。