2010-10-13 6 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"/>    
<% }%> 

Когда пользователь отправляет обновления продукты образуют форму в Index TestController также отображается как если бы он был представлен. Это делает RenderAction для элементов управления несколько бесполезными.

Любые идеи об обходных решениях или более удобных подходах были бы наиболее желанными.

Приветствия

UPDATE

Я не хочу использовать RenderPartial как предложено по следующей причине. Элемент управления в этом случае представляет собой окно поиска со многими параметрами, заполненными из базы данных. Логика для этого элемента управления/представления должна быть в SearchController.

Основная область страницы может содержать виды других контроллеров, например. вид продукта. Чтобы использовать RenderPartial, ProductController должен будет создать данные просмотра для окна поиска. Это не та работа, у ProductController нет бизнеса, зная, что функция поиска даже существует.

Я нашел решение, используя this blog post. Это также объясняет проблему, с которой у меня все хорошо. Кажется странным, что MVC не хватает этой функции.

ответ

2

Есть ли причина, по которой вы используете RenderAction вместо RenderPartial? RenderAction использует POST, RenderPartial использует GET.

+0

В настоящий момент MasterPage не имеет модели, используемой обработанным элементом управления, поэтому я не могу передать его PartialView. Я мог бы реорганизовать вещи, поэтому мои ViewModels наследуют от базы ViewModel, которая содержит данные главной страницы, которые я предполагаю. Не уверен, что я бы поместил какую-либо обработку этих данных, хотя для этого логическим местом является контроллер RenderPartial sidesteps. Придется подумать. – Magpie

Смежные вопросы