Syed Salman Raza Zaidi Ответов: 1

Mvc отключает проверку некоторых элементов управления


Я работаю над проектом, который находится на MVC, у меня есть две кнопки для одной формы,при нажатии на первую кнопку я выполняю какое-то действие и показываю сетку, текстовое поле и другую кнопку.
Это моя точка зрения
<pre lang="HTML">@using (Html.BeginForm("Index","Home",FormMethod.Post))
    {
	@Html.LabelFor(model => model.Name)
                @Html.TextBoxFor(model => model.Name , new { @class = "form-control" , @id = "txtbillingamount" })
	
	 @Html.LabelFor(model => model.Amount)
                @Html.TextBoxFor(model => model.Amount , new { @class = "form-control" , @id = "txtbillingamount" })
				
				  <button type="submit" name="command" value="request" >Next</button>
				  
				     @if (Model != null)
            {
               
                    <table class="table table-hover table-bordered table-striped">
                        <thead class="hbl-thead">
                            <tr>
                                <th> Title</th>
                                <th> Number</th>
                                <th>Amount</th>
                                
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>@Html.DisplayFor(model => model.ToAccountTitle)@Html.HiddenFor(model => model.ToAccountTitle)  </td>
                                <td>@Html.DisplayFor(model => model.RecieverMobileNumber)@Html.HiddenFor(model => model.RecieverMobileNumber)</td>
                                <td>@Html.DisplayFor(model => model.Amount)@Html.HiddenFor(model => model.Amount)</td>                                
                            </tr>
                        </tbody>
                    </table>
                
                <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">

                    <div class="form-group input-group-sm">
                        @Html.LabelFor(model => model.PIN)
                        @Html.PasswordFor(model => model.PIN , new { @class = "form-control" })                        
                    </div>
                    <button type="submit" name="command" value="payment">Submit</button>

                </div>
            }
	}

А это мой контроллер
public ActionResult Index(MyModel model , string command){
  if (ModelState.IsValid)
          {
              if (command == "request")
              {
              //Return data in model to fill Table
              }
              else if (command == "payment")
              {

              }
              }

              return View(model);
}



Проблема я столкнулся-это,если ModelState.IsValid терпит неудачу, возвращая представление с данными, заполненными в таблице, поэтому он показывает текстовое поле Pin-кода и проверяет его при следующем нажатии кнопки.

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

Я должен использовать POST-снова на кнопку "Далее" вместо AJAX-вызов

1 Ответов

Рейтинг:
10

Philippe Mori

Это до вас, чтобы решить, что вы держите от полученной модели, что вы берете из базы данных и что вы берете значение по умолчанию...

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

Кстати, подозрительно, что оба текстовых поля имеют один и тот же идентификатор (txtbillingamount).