我是MVC的新手,我想弄清楚是否有更好的方法来做到这一点.我有一个文本框供用户放入他们的搜索,然后基于该搜索我在搜索框下面显示一些结果.我试图避免在我的视图中有如此多的代码逻辑,并想知道是否有更好的方法来处理它.这是我现有的代码,根据"Model.Results"的值,如果我的其余逻辑通过,它将返回3个部分视图或按钮之一:
@section CustomerPrefixInfo
{
@if (Model.Results == PrefixSearch.SearchResults.CustomerFound)
{
@Html.Partial("_CustomerPrefixInfo")
}
@if (Model.Results == PrefixSearch.SearchResults.PrefixResultsFound)
{
@Html.Partial("_PrefixResults")
}
@if (Model.Results == PrefixSearch.SearchResults.AnimalsFound)
{
@Html.Partial("_AnimalSearchResults")
}
@if (Model.Results == PrefixSearch.SearchResults.ValidNewPrefix)
{
using (Html.BeginForm("Index", "PrefixManagement", new { prefix = Model.AnimalPrefix.Prefix, dbPrefix = Model.AnimalPrefix.DbPrefix }))
{
<fieldset>
<input id="btnReservePrefix" type="submit" value="Reserve Prefix" />
</fieldset>
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想将它放在一个控制器中,以便它只返回要显示的视图,然后只在页面上显示该视图.在做了一些rearch之后,我想使用Ajax.BeginForm并将InsertionMode设置为InsertAfter就可以了:
@using (Ajax.BeginForm("GenericSearch", "Home", FormMethod.Post, new AjaxOptions { InsertionMode = InsertionMode.InsertAfter, UpdateTargetId = "searchResults" }))
{
<fieldset>
<input id="btnPrefixSearch" type="submit" value="Prefix Search/Validate"/>
@Html.EditorFor(model => model.Input)
</fieldset> …Run Code Online (Sandbox Code Playgroud)