我在使用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缺少这个功能似乎很奇怪。
答案 0 :(得分:2)
您是否有使用RenderAction而不是RenderPartial的原因? RenderAction使用POST,RenderPartial使用GET。