PartialViews возятся друг с другом

У меня есть следующая страница _Layout.cshtml с кучей вызовов @Html.Action() для нескольких частичных представлений.

<div class="wrapper">
    <div class="header">
        <a style="text-decoration:none;" href="@Url.Action("Index", "Home")"><div class="logo"><p>fisharwe</p><span class="greenText float-right">:</span></div></a>
        <div class="searchBar">
            @Html.Action("Search", "Item")
        </div>
        <div id="hearGreenBar"></div>
    </div>
    <div class="pageContent">
        @RenderBody()
    </div>

    <div class="rightColumn">
        <div id="help">
            <div id="allHelpContent">
                <span id="helpIcon"></span> <span id="helpTitle">help</span> <span id="helpArrow"></span>
            </div>
        </div>

        <div id="userPanel">
            @if(!Request.IsAuthenticated)
            {
                <div id="loginForm">@Html.Action("Login", "User")</div>
                <div id="registerForm">@Html.Action("Register", "User")</div>
                <hr class="greyLine" />

                <div id="recentlyViewedItems">
                    <div id="recentItemsTitle">
                        <span class="recentItemsIcon"></span><span class="theRecentTitle">Recently Viewed</span>
                    </div>
                </div>
            }
            else
            {
                <div id="userInfoSummary">@Html.Action("Summary", "User")</div>
            } 
        </div>
    </div>
</div>

Вверху вы можете увидеть вызов @Html.Action("Seach", "Item"), который отображает панель поиска и позволяет пользователям искать элементы/категории/подкатегории... и т. д. У меня это работает сейчас, но это породило новую проблему! Когда пользователь что-то ищет и результаты отображаются, частичные элементы Login и Register на боковой панели (userPanel) отображают ошибки проверки, такие как «Электронная почта не может быть пустой». Я понимаю, что представление визуализируется независимо от того, какой фрагмент был отправлен обратно, но должен быть способ предотвратить это... Должен ли я избавиться от частичных фрагментов и отображать все на странице _Layout.cshtml? Но в этом случае мне нужно сделать эту страницу типизированной, что вызовет еще одну проблему... Итак, что можно сделать? Я открыт для любых предложений...

Спасибо.


person Kassem    schedule 25.04.2011    source источник


Ответы (1)


У вас разные формы для поиска и что есть в "userPanel"?. Возможно, вы захотите убедиться, что ваш поиск выполняет получение, а не сообщение.

 @using (Html.BeginForm("Search", "YourController", FormMethod.Get))
person B Z    schedule 25.04.2011
comment
@B Z: @Html.Action("Login", "User") и @Html.Action("Register", "User"), оба из которых содержат формы. - person Kassem; 25.04.2011
comment
Есть ли у вашего поиска форма? Смотрите мой обновленный ответ, проверьте, что вы делаете получение, а не сообщение - person B Z; 25.04.2011
comment
@B Z: На самом деле да, он содержит форму и делает сообщение, а не получение. Думаю, теперь, когда я изменил название метода, GET будет более подходящим. Попробую :) - person Kassem; 25.04.2011
comment
@B Z: это действительно решило проблему! +1 и спасибо за помощь! :) - person Kassem; 25.04.2011