2010-10-13 106 views
0

我在我的母版頁上有一個控件,使用RenderAction創建。我遇到的問題是當我在頁面上的其他地方使用表單時,它使用HttpPost而不是HttpGet來呈現此操作。RenderAction使用多種形式

我得到了爲什麼它這樣做,因爲請求是一個帖子,但是這不是所期望的或預期的結果,因爲該控件並未涉及用戶操作。

簡單的例子:

<div id="search-panel"> 
    <% Html.RenderAction("Index", "TestController"); %> 
</div> 
<% using (Html.BeginForm("Update", "Products") 
{%> 
    <%: Html.Hidden("productId", Model.ProductId) %> 
    <%: Html.TextBoxFor(model => Model.Name)%> 
    <input type="submit" vaue="Submit"/>    
<% }%> 

當用戶提交更新產品形成,如果它是在提交的TestController指數的形式也變爲。這使控制RenderAction有些無用。

任何有關解決方法或更好方法的想法都是非常受歡迎的。

乾杯

UPDATE

我不希望使用的RenderPartial的建議,原因如下。在這種情況下,控件是一個搜索框,其中包含從數據庫填充的許多選項。這個控制/視圖的邏輯應該在SearchController中。

該頁面的主要區域可以包含其他控制器的視圖,例如,產品視圖。要使用RenderPartial,ProductController必須爲搜索框創建視圖數據。這不是工作,ProductController甚至不知道「搜索」功能是否存在。

我找到了一個解決方案,使用this blog post。這也解釋了我很好的問題。 MVC錯過了這個功能似乎很奇怪。

回答

2

您有使用RenderAction而不是RenderPartial的原因嗎? RenderAction使用POST,RenderPartial使用GET。

+0

目前MasterPage沒有渲染控件使用的模型,所以我不能將它傳遞給PartialView。我可以重新組織一些東西,這樣我的ViewModel就可以從一個基本的ViewModel繼承,這個基礎ViewModel包含了我想的主頁面數據。不知道我會在哪裏處理這些數據,但控制器RenderPartial sidesteps是這個的合理位置。將不得不考慮一下。 – Magpie 2010-10-13 21:28:23