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