2010-11-06 37 views
5

Tôi có danh sách thả xuống: <% = Html.DropDownList ("ddlNames", Danh sách chọn mới (Mẫu.NameList, "ID", "Tên"))%>Html.ActionLink với giá trị id từ danh sách thả xuống

tôi đã có một ActionLink: <%: Html.ActionLink ("chỉnh sửa", "Sửa", "Thành viên", mới {diện tích = "MembersArea", id = XXX}, null)%>

Tôi muốn giá trị của danh sách thả xuống trong XXX. Vì vậy, tôi muốn sử dụng các giá trị từ các điều khiển trên một khung nhìn trong ActionLink. Điều đó có thể thực hiện một cách đơn giản không?

cảm ơn,

Filip

+0

Chỉ cần làm rõ: bạn muốn liên kết để có những giá trị được lựa chọn của DDL? vì vậy bất cứ khi nào DDL thay đổi bạn muốn thay đổi giá trị của liên kết? Bởi vì điều đó sẽ yêu cầu javascript để cập nhật giá trị như trong câu trả lời của @ Darin. – TJB

+0

vâng, tôi muốn làm điều đó. – Filip

Trả lời

3

Bạn không thể làm điều này vì những người giúp đỡ html thực hiện ở phía máy chủ trong khi giá trị thả xuống có thể thay đổi ở phía khách hàng. Cách duy nhất để đạt được nó là sử dụng javascript. Bạn có thể đăng ký tham gia sự kiện onchange của thả xuống và thay đổi giá trị của href của neo:

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

Đây có lẽ không phải là giải pháp tốt nhất vì các tuyến đường được cấu hình trên phía máy chủ và để thay đổi giá trị của liên kết bạn cần thực hiện một số thao tác chuỗi ở phía máy khách.

Thay vào đó, bạn có thể sử dụng biểu mẫu và nút gửi thay vì neo. Bằng cách này, giá trị được lựa chọn thả xuống sẽ được tự động gửi đến máy chủ và bạn không cần bất kỳ 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

Thay vì thay đổi giá trị của anchor mỗi khi thả xuống có liên quan được thay đổi, chỉ thay đổi nó một lần, khi nhấp chuột.

Ví dụ sử dụng Razor:

@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> 
Các vấn đề liên quan