将dropdown.onselect连接到服务器后端的正确方法是什么

时间:2016-06-14 01:08:54

标签: asp.net-mvc

我正在使用ASP.net 4.5,MVC。

我理解如何做所有常用的MVC。

在我的导航栏中,我有一个小的下拉列表,允许用户更改" location"。 然后从下拉列表中选择一个新位置时,我需要告诉会话变量更新,然后重新加载它们所在的页面。

我可以想到3种方法:

  1. 将一些javascript挂钩到下拉列表,对特殊控制器进行AJAX调用。
  2. 将某种形式提交到同一页面并以某种方式在通常的控制器中捕获它。
  3. 使用razor在HTML页面内编写功能(似乎错误,因为它是放置逻辑的错误位置)。
  4. 实现此功能的简单方法是什么?当用户点击该位置时,我希望它立即改变 - 没有"提交"按钮说。

1 个答案:

答案 0 :(得分:0)

我已经解决了这一问题,这就是为什么我会将其发布为 答案。

我写了如下视图:

<div class="dropdown">
    <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">
        @SessionHandler.UserSession.ValidFactories[SessionHandler.UserSession.SelectedFactoryIndex].Name
             <span class="caret"></span>
        </button>
        <ul class="dropdown-menu">
        @for (var i = 0; i < SessionHandler.UserSession.ValidFactories.Count; i++)
        {<li><a href = /Home/ChangeFactory?id=@i>@SessionHandler.UserSession.ValidFactories[i].Name</a></li>}
        </ul>
</div>

这意味着我将下拉列表作为ID提交给主页控制器 ChangeFactory 操作/功能。

public ActionResult changeFactory(int id)
    {

        SessionHandler.UserSession.SelectedFactoryIndex = id;

        return Redirect(Request.UrlReferrer.ToString());
    }

更改会话,然后将用户返回到他们所在的位置。非常快。我知道这将推动历史&#34;在浏览器中,但它现在很好。如果您有解决方案,请发布其他解决方案。