MVC jQuery принимает значение из выпадающего списка

0

Я новичок в программировании, и до сих пор я получил большую помощь для своего проекта в вопросах и ответах других участников здесь, в stackoverflow, но я наткнулся на эту проблему, и я не знаю, как ее решить, поэтому любая помощь приветствуется :)

У меня есть этот droddownlist, который заполняется из jQuery:

@Html.DropDownListFor(Model => Model.labs,
       new SelectList(
          Enumerable.Empty<SelectListItem>(), 
          "labsn", 
          "labdescr"),
          "Choose Lab", 
          new { id = "ddllab" })

Я хочу создать кнопку (или html.actionlink), которая примет выбранное значение labsn и перенаправит меня на другую страницу, где я буду создавать новую таблицу (таблицу labclasses), где labsn является FK, поэтому я хочу, чтобы поле labsn для автоматического заполнения выбранным значением с предыдущей страницы

а также я хочу еще одну кнопку, которая удалит лабораторную таблицу с выбранным labsn и любыми лабораторными классами с этой лабораторией как FK.

Страницы ActionResult, на которые я хочу перенаправить:

public ActionResult Create_LabClasses()
{
    return View();
}

Спасибо всем за ваше время.

Теги:
asp.net-mvc
redirect
html.dropdownlistfor

1 ответ

1
Лучший ответ

Я предполагаю, что у вас есть ссылка в вашем представлении с раскрывающимся списком labsn. Затем вы можете использовать немного jquery, чтобы изменить href вашей ссылки.

1) Определите свою ссылку для перенаправления на другое действие, которое принимает labsn

<a href="#" id="labsnAnchor">Go</a>

2) Подключитесь к событию изменения списка выпадающего списка в jquery и в изменении href обработчика в соответствии с выбранным значением. Этот javascript должен быть встроен в представление, потому что он использует помощник @Url.Action.

$('#ddllab').onchange(function(){
   val selectedValue = $(this).val();
   var link = $('#labsnAnchor');
   link.attr('href', '@Url.Action("LabInfo", "YourController")' + '?labsn=' + selectedValue );
});

3) Создайте действие в контроллере, который будет принимать labsn.

public ActionResult LabInfo(int labsn)
{ 
 ...
}

РЕДАКТИРОВАТЬ

Если вы хотите удалить функцию, я бы рекомендовал использовать FORM и Post действие на стороне сервера.

1) Вы можете создать форму в своем представлении со скрытым значением, которое будет содержать labsn и кнопку отправки

@using(Html.BeginForm('DeleteLab', 'YourController')
{
  <input type="hidden" value="LabsnToDelete"/>
  <input type="submit" value="Delete"/>
}

2) Измените скрытое значение, используя тот же javascript, что и для якоря

 $('#ddllab').onchange(function(){
   val selectedValue = $(this).val();
   var link = $('#labsnAnchor');
   link.attr('href', '@Url.Action("LabInfo", "YourController")' + '?labsn=' + selectedValue     );
   $('#LabsnToDelete').val(selectedValue); // just add this line to set LabsnToDelete value
});

3) И создайте действие контроллера, которое будет принимать почтовые запросы для удаления лабораторий

public ActionResult DeleteLab(int labsnToDelete)
{
    ...
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню