2010-11-06 26 views
5

我有一个下拉列表ID: <%= Html.DropDownList( “ddlNames”,新的SelectList(Model.NameList, “ID”, “姓名”))%>Html.ActionLink与数值从下拉列表

我有一个ActionLink的: <%:Html.ActionLink( “编辑”, “编辑”, “成员”,新{面积= “MembersArea”,ID = XXX},NULL)%>

我希望XXX中的下拉列表的值。 所以我想使用ActionLink中的视图控件的值。 这可能以简单的方式吗?

感谢,

菲利普

+0

只是为了澄清:你想利用DLL的选定值的链接?所以每当DDL发生变化时,您希望链接的值被更改?因为这将需要JavaScript来更新@ Darin的答案中的值。 – TJB 2010-11-07 09:00:54

+0

是的,我想这样做。 – Filip 2010-11-07 09:22:03

回答

3

你不能这样做,因为HTML辅助执行在服务器端,而下拉值可以在客户端更改。实现它的唯一方法是使用JavaScript。你可以注册下拉的onchange事件和修改锚的href的值:

$(function() { 
    $('#ddlNames').change(function() { 
     var value = this.value; // get the selected value 
     // TODO: modify the value of the anchor 
    }); 
}); 

这可能不是最好的解决办法,因为路由服务器端的配置,并以修改您需要在客户端执行一些字符串操作的链接值。

作为替代方案,您可以使用表单和提交按钮来代替锚点。这样的下拉的选定值将被自动发送到服务器,你不需要任何JavaScript:

<% using (Html.BeginForm("Edit", "Members", new { area = "MembersArea" })) { %> 
    <%= Html.DropDownListFor(x => x.SelectedName, 
     new SelectList(Model.NameList, "ID", "Name"))%> 
    <input type="submit" value="Edit" /> 
<% } %> 
3

而不是每一个相关的下拉列表改变时改变锚的价值,只是修改一次,点击。

示例使用剃刀:

@Html.DropDownList("DropDownFirstNames", new SelectList(Model.FirstNames, "ID", "Name")) 
@Html.DropDownList("DropDownLastNames", new SelectList(Model.LastNames, "ID", "Name")) 
@Html.ActionLink("Submit name", "ActionName", "ControllerName", null, new { @id = "SubmitName" }) 

<script type="text/javascript"> 
    $('#SubmitName').click(function() { 
     var first = $('#DropDownFirstNames').val(); 
     var last = $('#DropDownLastNames').val(); 
     var path = '@Url.Content("~/ControllerName/ActionName")' + "?firstId=" + first + "+&lastId=" + last 
     $(this).attr("href", path); 
    }); 
</script>