Список скрытых значений передает неверное значение контроллеру - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть список На мой взгляд.Для каждой строки я просматриваю кнопку и передаю значение Id как скрытое.Но когда я нажимаю любую кнопку, она передает неверное скрытое значение контроллеру.Всегда он передает скрытое значение первого ряда в контроллер.

Вид:

@foreach (var list in Model)
{
      <div>
       <div > @( ((int)1) + @Model.IndexOf(list)).</div>
        <div >@list.details</div>
         <div class="col-md-2 row-index">
              <button class="btn btn-link" type="submit" name="action:view" id="view">View</button>
               <input type="hidden" name="viewId" id="viewId" value="list.WId" />
           </div>
      </div>
}

Контроллер:

[HttpPost]
[MultipleButton(Name = "action", Argument = "view")]
public ActionResult ViewDetail(string viewId)
{
    return RedirectToAction("ViewDetails");
}

Ответы [ 3 ]

1 голос
/ 15 апреля 2019

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

[HttpPost]
[MultipleButton(Name = "action", Argument = "view")]
public ActionResult ViewDetail(string[] viewId)
{
    return RedirectToAction("ViewDetails");
}

если вы хотите получить точное значение, вам нужно продублировать форму в пределах каждого foreach в этом случае вы должны написать что-то вроде этого:

 @foreach (var list in Model)
    {
          <div>
           <div > @( ((int)1) + @Model.IndexOf(list)).</div>
            <div >@list.details</div>
             <div class="col-md-2 row-index">
             <form ... > // complete your form attributes 
                  <button class="btn btn-link" type="submit" name="action:view" id="view">View</button>
                   <input type="hidden" name="viewId" id="viewId" value="list.WId" />
              </form>
               </div>
          </div>
    }

Примечание: вы должны удалить глобальную форму

0 голосов
/ 15 апреля 2019

Вы устанавливаете для каждого значения одинаковый идентификатор элемента (который в любом случае недопустим) и имя.Когда вы отправляете свою форму (которая будет более полезна для полного ответа на ваш вопрос), он находит первый элемент, который соответствует этим критериям, и отправляет его.

Существует несколько способов решения этой проблемы, например, уже упомянутая формадля каждой записи, но другим предпочтением будет изменить вашу кнопку в div и добавить обработчик щелчка, чтобы передать определенное значение в функцию js, которая затем будет отправлена ​​в контроллер.Это предпочтительный выбор относительно того, насколько сильно вы хотите, чтобы ваш интерфейс.Но главная проблема - ваше соглашение об именах элементов.

0 голосов
/ 15 апреля 2019

У вас должна быть одна форма для каждой строки.затем вы отправляете эту строку.В противном случае, как вы утверждаете, он передает первое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...