Member 13058758 Ответов: 2

Получить значение из выпадающего списка на Аякс ссылку как параметр в MVC


Привет


У меня есть выпадающий список

@Html.DropDownListFor(model => model.EmpName, new SelectList(ViewBag.names, "Text", "Value"), "Select Name", new { @class = "form-control", @id = "drop" })


и я хочу установить его значение в качестве параметра в ссылке ajax action link

@Ajax.ActionLink("Make month salary", "createsalary", new { @name = wanna put value here }, new AjaxOptions()
{
    UpdateTargetId = "Sal",
    HttpMethod = "Get",
    InsertionMode = InsertionMode.InsertAfter
});




Что я должен делать

Что я уже пробовал:

я пытался использовать javascript для получения данных в текстовом поле или метке, но до сих пор не знаю, как преобразовать их в параметр

F-ES Sitecore

Вы не можете этого сделать, потому что серверный код (в блоке"@") запускается на сервере и передает html клиенту, поэтому, когда ваша ActionLink выполняется, выпадающий список еще не существует. Вам нужно будет добавить параметр самостоятельно через javascript, вероятно, когда выпадающий список изменится. Google для "javascript update link on dropdown change" для примеров того, как это сделать.

Member 13058758

спасибо это решит мою проблему

2 Ответов

Рейтинг:
2

Richard Deeming

Если вы включили опцию "ненавязчивый AJAX", то должно сработать что-то вроде этого:

@Ajax.ActionLink("Make month salary", "createsalary", new { @name = wanna put value here }, new AjaxOptions()
{
    UpdateTargetId = "Sal",
    HttpMethod = "Get",
    InsertionMode = InsertionMode.InsertAfter,
    OnBegin = "onCreateSalaryBegin"
});

...

<script>
function onCreateSalaryBegin(xhr, settings) {
    var empName = $("#drop").val();
    settings.data = $.extend(settings.data, { EmpName: empName });
}
</script>

Чтобы включить ненавязчивый AJAX, вам понадобится appSetting В вашем web.config файл:
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Вам также нужно будет включить jquery.unobtrusive-ajax.min.js сценарий в вашем представлении.


Member 13058758

он извлекает нулевое значение

Richard Deeming

Что получает нулевое значение? Параметр в действии? Функция Javascript? Что-то еще?

Попробуйте использовать инструменты разработчика в вашем браузере, чтобы проверить AJAX-запрос, чтобы увидеть, что передается на сервер.

Member 13058758

при нажатии на действие ссылки он не извлекал никаких данных или параметров

Richard Deeming

Поэтому используйте инструменты разработчика в вашем браузере, чтобы изучить запрос AJAX.

Member 13058758

спасибо я нашел другое решение

Рейтинг:
0

Member 13058758

document.getElementById('drop').onchange = function () {
    var path = document.getElementById('anchorclick').href;
    var Selectedvalue = $('[id*=drop] option:selected').text();
    path = path.replace("PaymentCodeVal", Selectedvalue);
    document.getElementById("anchorclick").href = path;

};


я решаю его с помощью функции java script


Richard Deeming

Это сработает только один раз. Если вы дважды измените раскрывающийся список, ссылка все равно будет ссылаться на первое выбранное значение.

Member 13058758

клиент не может сделать другой выбор эта ссылка переходит на другую страницу после выбора