我有一个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解决方案?
答案 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>
}
现在可以完美地满足我的需求。我的问题的结果已经实现。