Как предварительно выбрать элемент в раскрывающемся списке, используя страницы ASP.NET Core Razor
Если это помогает, мы используем страницы ASP.NET Core 2.1 и Razor (не традиционные MVC)
У меня проблемы с выбранной работой. Мы создаем список параметров для нашей страницы, используя список SelectListItem
это приносит перечисления, и мы помещаем это в наши пункты asp, и это работает потрясающе. Для нашей цели мы используем метку, которая увеличивается, поскольку имеет цикл из нескольких выпадающих списков.
<select asp-for="@Model.Answers[answerOptionIndex].AnswerText"
asp-items="@Model.CriticalIllnessTierSelectListItems"
class="form-control">
<option></option>
</select>
Для добавления продукта это прекрасно работает, asp-for генерирует Answers[0].AnswerText
для имени и Answers_0__AnswerText
для удостоверения личности, и это замечательно.
Проблема в том, что нам нужно иметь возможность редактировать существующую форму, поэтому для предварительного заполнения значений я обнаружил, что вы можете использовать asp-for для этого, поэтому я добавил @answerTextForQuestion
за asp-for
и теперь правильный выбор предварительно выбран при загрузке страницы... но тогда он портит мои идентификаторы и имя.
Когда я это делаю, я получаю это:
<select name="answerTextForQuestion" class="form-control"
id="answerTextForQuestion">
Что странно, это не имеет значения answerTextForQuestion
это просто помещает переменную.
Я пытаюсь вручную установить имя и идентификатор @Model.Answers[answerOptionIndex].AnswerText
и оставить asp-for
как @answerTextForQuestion
но он игнорирует это и все еще вставляет @answerTextForQuestion
за вопрос и ответ.
Я не знаю, как взять мой пирог и съесть его. Мне нужно, чтобы мой аспирант был @Model.Answers[answerOptionIndex].AnswerText
но мне также нужно выбрать любое значение @answerTextForQuestion
, Потому что мы используем SelectListItem
Я не могу просто выбросить выбранный атрибут справа.
Я обнаружил переполнение стека, которое пыталось использовать цикл, если этот элемент в выбранном соответствует answerTextForQuestion
затем сделайте выбранный атрибут истинным, но это не сработало, и я прочитал в комментариях, что выбран только для чтения, так что это не будет работать. Я обдумал это, потому что боюсь, что за него проголосуют как за повторяющийся пост.
Изменить: возможно, лучше заголовок, есть ли другой атрибут, который я могу использовать, чтобы сообщить браузеру, какой параметр следует предварительно выбрать без использования ASP-FOR. У нас есть много нашего AJAX, построенного вокруг имени и идентификатора, которые использует ASP-FOR, но мне просто нужна эта одна функция. Я посмотрел на документы C#, но ничего не увидел.
1 ответ
Для предварительного выбора элемента в выпадающем списке, вы можете сослаться на часть кода для простого примера, как показано ниже
1. В Edit.cshtml
<div class="form-group">
<label asp-for="Movie.Genre" class="control-label"></label>
<select asp-for="Movie.Genre.Id" asp-items='(List<SelectListItem>)ViewData["Genres"]'></select>
</div>
2. В Edit.cshtml.cs
Привязка модели
[BindProperty]
public Movie Movie { get; set; }
public Genre Genre { get; set; }
OnGetAsync()
Movie = await _context.Movie
.Include(m => m.Genre)
.SingleOrDefaultAsync(m => m.Id == id);
ViewData["Genres"] = _context.Genre.Select(g => new SelectListItem { Value = g.Id.ToString(), Text = g.Name }).ToList();