Html.Actionlink可以传递下拉列表的选定值吗?

时间:2015-06-19 04:30:17

标签: asp.net-mvc razor asp.net-mvc-5

我有一个MVC剃刀页面,其中有两个HTML动作链接可以单独使用,但不能一起使用。在研究jQuery选项之前,我想确保我没有遗漏任何明显的东西。我希望通过向相关的html.actionlink添加第二个参数来保持简单。

我正在从Web页面转换到MVC,所以我通过查看Microsoft ASP.NET学习资源和其他SO帖子的示例来收集到目前为止的内容。

这些是我的cshtml页面的当前(相关)部分。

第一个操作(按下拉列表过滤):在页面顶部,我有一个下拉列表,通过该下拉列表我可以按一个列值过滤表单。它本身就很有效。

@using (Html.BeginForm())
{
  <p>
    Filter by Campus: @Html.DropDownList("searchByFilter", new SelectList(ViewBag.names)) 
    <input type="submit" value="Filter" />
  </p>
}

第二个操作(按列排序):在表的标题行中,我有一个操作链接,当用户单击列标题时,控制器会按顺序对表进行排序。我只是在表格中显示一个列,向您展示它是如何工作的。

<th>                        
   @Html.ActionLink("Campus", "Index", new { orderBy = ViewBag.CampusSortParm })       
</th>

问题:虽然这些工作非常独立 - 但由于显而易见的原因,这两个操作链接无法协同工作。我希望我可以保持简单并做这样的事情,添加第二个参数,可以读取下拉列表的值(null不是一个选项)。

<th>                        
   @Html.ActionLink("Campus", "Index", new { orderBy = ViewBag.CampusSortParm 
   @*, searchByFilter = selected value of searchByFilter dropdown, but how do I get it here? *@  })
</th>

我可以这种方式添加第二个参数,还是需要查看jQuery解决方案?

1 个答案:

答案 0 :(得分:0)

感谢@Stephen Muecke确认我提出的问题需要在jQuery或Javascript中完成。

然而,在问自己为什么我的代码到目前为止能够工作之后,我想到了我可以做出的明显改变。我只是将其作为表单提交的一部分,而不是按列单击进行排序。

@using (Html.BeginForm())
{
<div>
    <p>
        Filter by Campus: @Html.DropDownList("searchBy", new SelectList(ViewBag.names))
    </p>
    <p>
        <strong>Sort by Column: </strong>
        @Html.DropDownList("orderBy", new SelectList (ViewBag.SortByColumns))
    </p>
    <p>
        <strong>Sort Direction: </strong>            
        @Html.DropDownList("orderDir", new SelectList(ViewBag.SortDir))
    </p>
    <input type="submit" value="Apply" />
</div>
}

现在可以完美地满足我的需求。我的问题的结果已经实现。