HTML Id вопрос - PullRequest
       6

HTML Id вопрос

0 голосов
/ 05 февраля 2011

У меня есть что-то вроде этого

public class Reminders()
{
   public List<SelectListItem> Reminder { get; set; }
   public string SelectedReminder { get; set; }
}

Теперь я хочу создать классы Список напоминаний, которые содержат то, что у меня есть выше.

List<Reminders> reminders = new List<Reminders>();
// add SelectListItems somehow through auto mapper( not sure how to do)
// add reminders into my viewModel

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

Если я хочу, чтобы у них было только 1, я должен убедиться, что у коллекции есть одно напоминание.Если я хочу 100, тогда я изменяю это на 100. Таким образом, делая это, я проверяю эту область в будущем, поскольку она может очень легко расширяться или уменьшаться.

Теперь, прежде чем я попытаюсь пойти, сделайте это и попытайтесь выяснить, какчтобы сделать это с Autopper, мне интересно, как я могу сделать каждый выпадающий список имеет свой собственный идентификатор?Как и сейчас, я вижу, что все они будут иметь один и тот же идентификатор («SelectedReminder»).

Конечно, это плохо, так как у вас должен быть только один идентификатор на HTML-страницу.Так как я могу сделать так, чтобы у них были разные идентификаторы?

1 Ответ

2 голосов
/ 05 февраля 2011

Если вы используете шаблон редактора, вам не стоит об этом беспокоиться, потому что все соглашения об именах будут правильно обрабатываться платформой.Вам также не нужно выполнять какие-либо циклы .Итак, предположим, что у вас есть действие контроллера, которое возвращает IEnumerable<Reminders>, и вы хотите сгенерировать список выпадающих списков:

public ActionResult Index()
{
    var reminders = new[]
    {
        new Reminders 
        {
            Reminder = new List<SelectListItem> 
            { 
                new SelectListItem { Value = "1", Text = "reminder 1" },
                new SelectListItem { Value = "2", Text = "reminder 2" },
            },
        },
        new Reminders
        {
            Reminder = new List<SelectListItem> 
            { 
                new SelectListItem { Value = "1", Text = "reminder 1" },
                new SelectListItem { Value = "2", Text = "reminder 2" },
                new SelectListItem { Value = "3", Text = "reminder 3" },
            },
        }
    };
    return View(reminders);
}

Тогда, на ваш взгляд, вы просто:

@model IEnumerable<AppName.Models.Reminders>
@using (Html.BeginForm())
{
    @Html.EditorForModel()
    <input type="submit" value="OK" />
}

и соответствующий шаблон редактора (~/Views/Home/EditorTemplates/Reminders.cshtml):

@model AppName.Models.Reminders
@Html.DropDownListFor(
    x => x.SelectedReminder, 
    new SelectList(Model.Reminder, "Value", "Text")
)

Поскольку вы отправили 2 элемента в модель представления, будут сгенерированы 2 раскрывающихся меню, каждое из которых имеет правильное имя, чтобы при отправке назад вы получилисоответствующие выбранные значения:

<select name="[0].SelectedReminder">
    <option value="1">reminder 1</option>
    <option value="2">reminder 2</option>
</select>

<select name="[1].SelectedReminder">
    <option value="1">reminder 1</option>
    <option value="2">reminder 2</option>
    <option value="3">reminder 3</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...