Member 13203555 Ответов: 2

Мне нужно автоматически выбрать одно значение из выпадающего списка, передав его в url-адрес с помощью MVC


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

выберите POR для получения контрольного списка
901: R Server Quarterly (ежеквартальное обновление; переименование продукта/PFAM)
913: Visual Studio для MAC (запуск мультимедиа)



допустим, если я хочу автоматически выбрать значение 901, я хочу, чтобы это значение было передано в url-адрес и при нажатии на него должно быть выбрано значение.я использую mvc.

мой url-адрес - @urlaction ("PORChecklist", "Tables"). как выбрать значение автоматически из выпадающего списка с помощью этого url-адреса?

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

Я использовал jquery in view для автоматического выбора значения, но на данный момент я его закодировал.


функция selectFromDropdown(селектор, текст) {
$(селектор).найти('вариант').каждый(функция () {
if ($(this). text () = = текст) {
$(селектор).функция val($(это).вал());

возвращать false;
}
})
}
setTimeout(функция () {
selectFromDropdown ('#PORList', ' 913:Visual Studio for MAC (media launch)')
},
это прекрасно работает для меня. но по запросу мне нужно было бы передать требуемое значение, которое нужно выбрать только через url.

вот фрагмент кода, который содержит список опций на странице контроллера.
public ActionResult PORChecklist()
{

Список<строка> У dropdown_content = новый список<строка&ГТ;();
dropdown_content = DOMEHelper.FufillmentChecklistPORs();
SelectList list = новый SelectList(dropdown_content);

Видовая сумка.ListOfPORs = список;
возвращение смотреть();

}

F-ES Sitecore

А не с помощью JavaScript определить, какое значение необходимо выбрать при создании списка объектов

http://stackoverflow.com/questions/1390830/mvc-set-selected-value-of-selectlist

2 Ответов

Рейтинг:
20

David_Wimbley

Я бы сказал, что поскольку у вас уже есть элемент, который должен быть выбран в вашем URL-адресе, вы должны просто изменить свое действие в контроллере, чтобы принять его в качестве аргумента.

Так что если Ваш URL-адрес что-то вроде

/MyApp/PORChecklist/913: Visual Studio для MAC (media launch)

public class MyAppController
{
	public ActionResult PORChecklist(string id)
	{
		List<string> dropdown_content = new List<string>();
		var dropdown_content = DOMEHelper.FufillmentChecklistPORs();
		SelectList list = new SelectList(dropdown_content);

		var selectedItem = list.FirstOrDefault(m=>m.Value == id);

		if(selectedItem != null)
		{
		   selectedItem.Selected = true;
		}    
		
		ViewBag.ListOfPORs = list;
		return View();
	}
}


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

ex: /MyApp/PORChecklist/?selectedItem=913:Visual Studio for MAC (media launch)

Ваше действие в вашем контроллере должно выглядеть примерно так

public ActionResult PORChecklist(string selectedItem)


Таким образом, вам не нужно делать свой выбор с помощью javascript, и он обрабатывается вашим контроллером в соответствии с соглашениями MVC. Я не запускал/тестировал этот код, но общая идея заключается в том, чтобы сделать то, что вам нужно.


Member 13203555

я получаю нулевое значение для выбранного элемента var при выполнении. я дал id как 913: Visual Studio for MAC (media launch). есть ли какой-либо другой способ сделать значение выбранным, когда я передаю требуемый идентификатор.

David_Wimbley

Возможно, у вас возникли проблемы со строкой 913: Visual Studio for MAC (media launch) в вашем URL-адресе. Если это возможно, вы можете передать идентификатор или, возможно, Вам потребуется url-кодировать/декодировать значение, чтобы оно соответствовало фактическому выпадающему значению.

Не видя вашего кода, это лучшее, что я могу вам сказать.

Member 13203555

теперь это работает на меня. Я могу выбрать необходимое значение из выпадающего списка автоматически, когда я нажимаю на ulr /MyApp/PORChecklist/? selectedItem=913:Visual Studio for MAC (media launch)
ВАР selectListItems = dropdown_content.Выберите(х =>, новые SelectListItem() { значение = х, текст = х }).Список();

по каждому элементу (ВАР продукт в selectListItems)
{
if (item. Value = = PORlist)
{
пункт.Selected = true;
перерыв;
}
}

Видовая сумка.ListOfPORs = список;
возвращение смотреть();

Мне нужна еще одна помощь в url-адресе, я не хочу жестко кодировать выбранное значение элемента, например
PORChecklist/? selectedItem=913: Visual Studio для MAC (запуск мультимедиа). я просто хочу, чтобы отправить значение как PORChecklist/?для selecteditem = идентификатор
где id должен содержать список выпадающих значений при наведении курсора мыши на строки в таблице. Например, строка 1 содержит идентификатор 913 вопог, строка 2 содержит идентификатор 914.
когда я нажимаю на ID 913 оно должно перенаправить на PORChecklist/?для selecteditem = 913:в Visual Studio для Mac (выпуск СМИ) и я когда я нажимаю на строки 2 код, содержащий 914 следует нажать на PORChecklist/?для selecteditem = 914:визуальная студия для SAP

Рейтинг:
0

Member 13203555

Привет...спасибо за ваше решение. Я могу решить второй вопрос, который я задал вам. вот приведенный ниже код.
в cs.html

<a class="visitedlink" target="_blank" href='@Url.Action("PORchecklist_list", "Tables" , new {PORID = @s.PorID })' >@s.OverAllTaskStatus%</a></div>

в контроллерах
Цитата:
public ActionResult PORChecklist_list(string PORID)
{

List & lt;string & gt; Desc = новый список & lt;string>();
Desc = WorkItemDescription.GetAllLaunchWorkItemDescription(PORID);

// Desc = WorkItemDescription.GetAllLaunchWorkItemDescription(913);
список var = "";

foreach (var a in Desc)
{
список = список + a;
}
return Json(список);
}


Но я стою лицом к лицу
Цитата:
Система.InvalidOperationException: этот запрос был заблокирован, поскольку конфиденциальная информация может быть раскрыта сторонним веб-сайтам, когда она используется в запросе GET. Чтобы разрешить запросы GET, установите для JsonRequestBehavior значение AllowGet.
ошибка.
Я использовал
return Json(list, "text/plain");
и
return Json(list,JsonRequestBehavior.AllowGet);
а также ...я столкнулся с этой проблемой во время выполнения. Пожалуйста, помогите мне.