MVC如何在页面之间导航时保持搜索值?
Posted
技术标签:
【中文标题】MVC如何在页面之间导航时保持搜索值?【英文标题】:MVC How to keep search value when navigating between pages? 【发布时间】:2015-12-12 07:23:17 【问题描述】:我有一个使用 EMPLID 进行搜索的搜索框。搜索有效,但如果我在搜索后转到任何其他页面(例如:如果我切换到详细信息页面)然后导航回我搜索过的页面,它会显示所有记录。如何保留搜索条件,以便在我在页面之间导航时显示该 EMPLID 的信息?
我的控制器:
public ActionResult Index(string SearchString)
var emp = from e in db.EMPLOYMENTs
select e;
if (!String.IsNullOrEmpty(SearchString))
emp = emp.Where(s => s.EMPLID.Contains(SearchString));
return View(emp);
我的布局:
@using (html.BeginForm())
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input class="form-control" placeholder="Search" type="text" name="SearchString">
</div>
</form>
【问题讨论】:
您可能希望将这些数据填充到会话变量中,然后在每个页面上使用它(如果存在)。 我想使用 cookie 是在页面之间切换时保留数据的最佳方式 【参考方案1】:您可以使用TempData
来保留搜索字符串。
像这样在临时数据中添加您的 SearchString-
TempData["SearchString"] = SearchString;
...并在需要时取回该值-
string searchString = TempData["SearchString"] as string;
有关在 ASP.NET MVC 应用程序中传递数据的更多信息,请参阅这篇 msdn 文章
【讨论】:
【参考方案2】:您有两个选择:使用 TempData 或使用 Session State。
按照示例进行操作:
http://www.dotnetcurry.com/aspnet-mvc/1074/aspnet-mvc-pass-values-temp-data-session-request
http://www.codeproject.com/Articles/818493/MVC-Tempdata-Peek-and-Keep-confusion
TempData keep() vs peek()
How to keep search value after delete in MVC
【讨论】:
谢谢!可以举个例子吗? 是的!一会儿,我在手机里。以上是关于MVC如何在页面之间导航时保持搜索值?的主要内容,如果未能解决你的问题,请参考以下文章