Если я правильно понимаю вашу проблему, вы пытаетесь передать выбранное значение из DropDownList
helper в @Ajax.ActionLink
helper из представления, что невозможно, поскольку @Ajax.ActionLink
helper обрабатывается и обрабатывается на стороне сервера перед отправкой в браузер ,
Вместо этого вы можете использовать помощник @Html.ActionLink
без параметра routeValues
и установить атрибут id
этого тега привязки:
@Html.ActionLink("Get Item", "TargetAction", "TargetController", null, new { id = "link" })
Затем используйте ненавязчивый AJAX для обработки click
события этой ссылки и передачи туда выбранного значения из выпадающего элемента:
$('#link').click(function(e) {
e.preventDefault();
// get selected value from dropdownlist
var selected = $('#ItemID').val();
$.ajax({
type: 'GET',
url: this.href,
data: { id: selected }, // action parameter with selected value
cache: false, // disable caching
success: function (result) {
// do something to target DOM
}
});
return false;
});
Дополнительные примечания:
1) Убедитесь, что параметр (ы), переданный в настройку data
, точно соответствует параметру (ам) в целевом действии контроллера, указанном атрибутом href
ссылки.
public ActionResult TargetAction(int id)
{
// do something
}
2) Вы можете использовать строго типизированную версию DropDownList
, т.е. DropDownListFor
, чтобы связать свойство viewmodel.
@Html.DropDownListFor(model => model.ItemID, ViewBag.Items as SelectList, ...)