如何选择搜索选项然后在mvc razor中提交表单

时间:2014-12-03 02:31:11

标签: c# asp.net-mvc twitter-bootstrap razor

我的目标是在活动目录中搜索员工,并允许我在下拉列表中选择搜索选项。

例如:如果我选择带有执行的EmployeeNumber表单并搜索与输入框值匹配的EmployeeNumber - " SamAccountName是默认搜索"

注意:

  • 当我点击EmployeeNumber时,它应该提交表单。
  • SamAccountName按钮正在运行。

enter image description here

问题:如何使用不同的提交或搜索选项?

@using (Html.BeginForm("SystemPrepared", "Home", FormMethod.Get))
{
    @Html.TextBox("spq", null, new { @class = "form-control", @placeholder = "Search..."})
    <div class="input-group-btn">
        <button class="btn btn-default" type="submit">SamAccountName</button>

        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><span class="caret"></span></button>
        <ul class="dropdown-menu" role="menu">
            <li><a href="#">SamAccountName</a></li>
            <li><a href="#">EmployeeNumber</a></li>
            <li><a href="#">GivenName</a></li>
            <li><a href="#">Surname</a></li>
            <li><a href="#">EmailAddress</a></li>
            <li><a href="#">Enable</a></li>
            <li><a href="#">GUID</a></li>
            <li><a href="#">SID</a></li>                        
        </ul>

    </div>
}

我尝试过的事情:

<li><a href="?fltr=EmployeeNumber">EmployeeNumber</a></li>

使用请求查询字符串获取值,但问题是表单提交并且spq为空或为空。

更新

斯蒂芬要求

    public ActionResult SystemPrepared(string spq)
    {
        coockieActiveDirectory2 = db.ActiveDirectory2.Where(user =>
                user.SamAccountName.Contains(spq));

        return View(coockieActiveDirectory2);
    }

目前这正是我在控制器中所拥有的

1 个答案:

答案 0 :(得分:1)

您正在使用的Bootstrap控件并非真正专为此任务而设计。你真正需要的是:

<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><span class="caret"></span></button>
<ul class="dropdown-menu" role="menu">
    <li><button type="submit" name="searchType" value="SamAccountName">SamAccountName</button></li>
    <li><button type="submit" name="searchType" value="EmployeeNumber">EmployeeNumber</button></li>
    <li><button type="submit" name="searchType" value="GivenName">GivenName</button></li>
    ...                      
</ul>

换句话说,当您点击其中一个项目时,它会提交表单并发布一些searchType的值,然后您可以使用该值来根据用户进行正确的搜索类型点击。但是,Bootstrap样式不处理该场景。这并不意味着您无法添加自己的样式,使其看起来像常规按钮下拉列表。

或者,如果您想坚持使用默认的Bootstrap样式/控件,并且不介意使用JavaScript,那么您可以执行以下操作:

<input type="hidden" name="searchType" id="SearchType" />

<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><span class="caret"></span></button>
<ul class="dropdown-menu" role="menu">
    <li><a href="#" class="search-submit" data-search-type="SamAccountName">SamAccountName</a></li>
    <li><a href="#" class="search-submit" data-search-type="EmployeeNumber">EmployeeNumber</a></li>
    <li><a href="#" class="search-submit" data-search-type="GivenName">GivenName</a></li>
    ...
</ul>

然后添加如下的脚本:

$('.search-submit').on('click', function (e) {
    e.preventDefault();
    var searchType = $(this).data('search-type');
    $('#SearchType').val(searchType);
    $('#YourForm').submit();
});

换句话说,您将事件处理程序绑定到按钮下拉链接,该链接将隐藏字段设置为正确的值,然后发布表单。

相关问题