具有多个表单的RenderAction

时间:2010-10-13 20:52:29

标签: c# asp.net-mvc

我在使用RenderAction创建的母版页上有一个控件。我遇到的问题是当我在页面上的其他地方使用表单时,它使用HttpPost而不是HttpGet呈现此操作。

我知道为什么它正在执行此操作,因为请求是一个帖子,但这不是期望或预期的结果,因为控件不会参与用户操作。

简化示例:

<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"/>            
<% }%>

当用户提交更新产品表单时,Index TestController中的表单也会呈现为提交时。这使得控件的RenderAction有些无用。

欢迎任何关于变通方法或更好方法的想法。

干杯

更新

由于以下原因,我不希望使用RenderPartial。在这种情况下,控件是一个搜索框,其中包含从数据库填充的许多选项。此控件/视图的逻辑应该在SearchController中。

页面的主要区域可能包含来自其他控制器的视图,例如产品视图。要使用RenderPartial,ProductController必须为搜索框创建视图数据。这不是它的工作,ProductController没有业务知道甚至存在搜索功能。

我找到了使用this blog post的解决方案。它也解释了我很好的问题。 MVC缺少这个功能似乎很奇怪。

1 个答案:

答案 0 :(得分:2)

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