ASP.NET MVC Удалить проверки модели

Предположим, у меня есть форма с двумя кнопками отправки: сохранить и удалить.

Как я могу удалить/отключить проверку модели на кнопке удаления?


person POIR    schedule 25.04.2014    source источник


Ответы (3)


Предполагая, что вы используете стандартную проверку ненавязчивости/jQuery; Отключите проверку на стороне клиента, поместив класс «отмена» на кнопку:

<button type="submit" class="cancel">Delete</button>

Это предотвратит запуск проверки на стороне клиента в случае нажатия этой кнопки.

На стороне сервера просто не проверяйте, действительна ли модель или нет.

person Ant P    schedule 25.04.2014
comment
Меня интересует проверка на стороне клиента. Пожалуйста, опишите мне немного больше вашего решения. - person POIR; 25.04.2014
comment
Спасибо! Теперь я понимаю. Я никогда не думал, что это будет так просто. - person POIR; 25.04.2014
comment
@Otix Да - это просто соглашение, используемое jQuery Validate :) - person Ant P; 25.04.2014

Например, если у вас есть свойство Name в модели, и вы хотите НЕ проверять его при удалении. Сначала вам нужно определить, исходит ли httppost от кнопки «Сохранить» или «Удалить».

Добавьте в поле модели IsDelete.

Я предлагаю вам добавить в свое представление что-то вроде:

    @Html.HiddenFor(x => x.IsDelete)

Добавьте событие onclick к кнопке удаления:

<button type="submit" onclick="javacript: $('#IsDelete').val('true');"> Delete </button>

В контроллере сделайте что-то вроде:

public ActionResult MyAction(MyModel model)
{
   if(model.IsDelete)
      ModelState.Remove("Name");

   var valid = ModelState.IsValid();
}
person leskovar    schedule 25.04.2014

Вы можете использовать две отдельные формы в представлении для редактирования и удаления.

Ex:

@using(Html.BeginForm("Edit", "Employee"))
{
    //Edit inputs - ex textboxes for employee details such as name, age...
    <input type="submit" value="Edit" />
} 

@using(Html.BeginForm("Delete", "Employee"))
{
    //Delete inputs - ex: hidden input for employee id
    <input type="submit" value="Delete" />
} 
person Haritha    schedule 25.04.2014