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如何在页面之间导航时保​​持搜索值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在复杂的导航堆栈之间传递变量

如何在 Spring MVC 应用程序中自动导航到登录页面?

ASP.NET MVC C# 如何分隔导航栏链接?

如何根据 MVC 中的控制器隐藏共享布局中的元素

在 Flutter 中搜索后如何导航到详细信息页面

在页面之间导航后如何在jquery mobile中停止重复数据