我有以下_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)会显示验证错误,例如“电子邮件不能为空”。据我所知,无论发回什么部分都会呈现View,但必须有一种方法可以防止这种情况发生......我是否必须摆脱局部并将所有内容渲染到_Layout.cshtml页面中?但在这种情况下,我需要输入这个页面,这将导致另一个问题......那么可以做些什么呢?我愿意接受任何建议......
谢谢。
答案 0 :(得分:2)
您是否有不同的搜索表单以及“userPanel”中的内容?你可能想确保你的搜索是一个获取而不是一个帖子。
@using (Html.BeginForm("Search", "YourController", FormMethod.Get))