来自Html.DropDownList的MVC调用动作方法

时间:2015-07-01 19:27:10

标签: asp.net-mvc drop-down-menu

_layout:

@if (User.Identity.IsAuthenticated)
                        {
                            <li>@Html.DropDownList("User", new List<SelectListItem>
                           {
                               new SelectListItem { Text = User.Identity.Name, Value = "1", Selected = true },
                               new SelectListItem { Text = "Logout", Value = "2" }
                           })</li>
                        }

当用户点击logout选项下拉列表时,我需要像使用ActionLinks一样调用Lo​​gout()方法。我该怎么做?

修改 注销不使用新的jquery代码。这是为什么?

public ActionResult Logout()
        {
            FormsAuthentication.SignOut();

        return View("../Home/Index");
    } 

我的旧代码仍可以通过注销用户来解决。

  <li>@Html.ActionLink("Logout", "Logout", "Users", new { }, new { @class = "nav-link" })</li>

1 个答案:

答案 0 :(得分:1)

假设你使用的是jQuery,你可以这样做:

<script type="text/javascript">
    $(function() {
        $('#User').on('change', function (event) {
            if (event.currentTarget.selectedIndex === 1) {
                // redirect to your logout controller, redirect
                window.location.href = '/controller/logoutaction';
            }
        });
    });
</script>

或者,您可以使用这些项目执行无序列表,这些项目将在单击或悬停其他元素时显示。当然你必须设计风格。这样您就可以使用ActionLink。 MVC.Authentication.LogOut()只是注销的示例动作。

<div class="myDropdown">
    <ul>
        <li>User.Identity.Name</li>
        <li>@Html.ActionLink("Log out", MVC.Authentication.LogOut())</li>
    </ul>
</div>