Мне было интересно, можно ли отфильтровать, какое действие вызывается на основе параметра в строке запроса.
Например, у меня есть сетка со столбцом переключателя, чтобы выбрать элемент в сетке. Сетка обернута в форму, а вверху сетки находятся кнопки для редактирования / удаления выбранного элемента. Нажатие на кнопки редактирования / удаления сообщений назад и отключение магии jquery для задания свойства команды, чтобы я мог различать редактирование и публикацию. Затем я могу справиться с этим, добавив атрибут фильтра HttpPost к своему действию.
Теперь мне нужно добавить поиск в форму. Самый простой способ сделать это - разместить форму поиска вне существующей формы и установить метод get. Это работает, но у меня есть случай, когда форма поиска должна быть расположена в моей форме сетки. Я понимаю, что у меня не может быть вложенных форм, поэтому я удалил теги формы для внутренней формы, но теперь при выполнении поиска будет запускаться запрос на публикацию. Если вы все еще продолжаете следовать, вы увидите, что это вызывает метод действия редактирования / удаления, но я действительно хочу инициировать начальное действие, но иметь дополнительный параметр поиска.
Вот как выглядят мои методы действий:
public ActionResult Index(string search)
{
return GetData(search);
}
[HttpPost]
public ActionResult Index(string command, int id)
{
switch (command)
{
case "Delete":
DeleteData(id);
break;
case "Edit":
return RedirectToAction("Edit", new { id = id });
}
return RedirectToAction("Index");
}
В идеале я бы хотел сказать:
public ActionResult Index(string search)
{
return GetData(search);
}
[HttpPost]
[Command(Name="Delete,Edit")] OR [Command(NameIsNot="Search")]
public ActionResult Index(string command, int id)
{
switch (command)
{
case "Delete":
DeleteData(id);
break;
case "Edit":
return RedirectToAction("Edit", new { id = id });
}
return RedirectToAction("Index");
}
Обратите внимание, как я фильтрую, какое действие вызывается на основе команды. Может быть, я в полной неразберихе, но MVC для меня новичок, и я был бы очень признателен, если бы кто-то мог помочь.
Спасибо