【问题标题】:PartialViews Messing With Eachother部分观点相互混淆
【发布时间】:2011-04-25 16:36:40
【问题描述】:

我有以下 _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") 调用,它呈现一个搜索栏并允许用户搜索项目/类别/子类别...等。我现在得到了这个工作,但它产生了一个新问题!当用户搜索某些内容并呈现结果时,侧边栏 (userPanel) 中的 LoginRegister 部分显示验证错误,例如“电子邮件不能为空”。我知道无论回发什么部分都会呈现视图,但必须有一种方法来防止这种情况发生......我是否必须摆脱部分并将所有内容呈现到 _Layout.cshtml 页面中?但在那种情况下,我需要输入这个页面,这将导致另一个问题......那么可以做什么呢?我愿意接受任何建议...

谢谢。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 razor postback partial-views


    【解决方案1】:

    您是否有不同的搜索形式以及“userPanel”中的内容?您可能需要确保您的搜索是获取而不是发布。

     @using (Html.BeginForm("Search", "YourController", FormMethod.Get))
    

    【讨论】:

    • @B Z:@Html.Action("Login", "User")@Html.Action("Register", "User"),两者都包含表单。
    • 您的搜索是否也有表单?查看我更新的答案,检查您是在获取而不是发布
    • @B Z:实际上是的,它确实包含一个表单,并且它正在发布而不是获取。我想现在我更改了方法的名称,GET 会更合适。会试一试:)
    • @B Z:这实际上解决了问题! +1,感谢您的帮助! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多