使用下拉值传递给控制器​​的技术信息

时间:2011-01-28 07:25:13

标签: asp.net-mvc asp.net-mvc-3

我在执行以下操作时遇到困难,如果有人能告诉我如何实现以下目标:

在下拉列表中进行新选择后,我会调用操作状态并将下拉列表中的选定值作为参数传递。

我在视图中有如下的下拉列表

@Html.DropDownList("Status", Model.DisplayStatus)

在我的控制器中,我正在

private ActionResult Status(string active = "All")
     {
         UserModel model = new UserModel(active);
         return View("Users", model);
     }

1 个答案:

答案 0 :(得分:1)

我会使用强类型助手和jquery。像这样:

public class MyViewModel
{
    public string Status { get; set; }
    public IEnumerable<SelectListItem> Statuses
    {
        get
        {
            return new[]
            {
                new SelectListItem { Value = "online", Text = "Online" },
                new SelectListItem { Value = "offline", Text = "Offline" },
                new SelectListItem { Value = "all", Text = "All" },
            };
        }
    }
}

然后是控制器:

public class HomeController: Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel());
    }

    public ActionResult Status(string status)
    {
        UserModel model = new UserModel(status);
        return View("Users", model);
    }
}

最后是观点:

@model AppName.Models.MyViewModel
@using (Html.BeginForm("Status", "Home", FormMethod.Post, new { id = "myForm" }))
{
    @Html.DropDownListFor(
        x => x.Status, 
        new SelectList(Model.Statuses, "Value", "Text"),
        new { id = "status" }
    )
}

和一些附加到更改事件并提交表单的脚本:

<script type="text/javascript">
$(function() {
    $('#status').change(function() {
        $('myForm').trigger('submit');
    });
});
</script>