В методе HttpPost, как я могу определить, какая кнопка была нажата - PullRequest
0 голосов
/ 05 ноября 2010

Я создаю поисковое представление в asp.net MVC 2

Итак, у меня есть:

public ActionResult Search()
{
    ...
}


[HttpPost]
public ActionResult Search(string input, FormCollection formValues)
{
    ...
}

Проблема в том, что есть текстовое поле и две кнопки «Поиск» и «Очистить результаты».

После ввода метода [HttpPost], как мне определить, какая кнопка была нажата? (Так что я могу изменить логику поиска и отображения) - или это должна быть ссылка?

Ответы [ 3 ]

3 голосов
/ 05 ноября 2010

Я разработал этот быстрый маленький ActionMethodSelectorAttribute

public class AcceptParameterAttribute : ActionMethodSelectorAttribute
{
    public string Name { get; private set; }

    public AcceptParameterAttribute(string name)
    {
        Name = name;
    }

    public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
    {
        HttpRequestBase req = controllerContext.HttpContext.Request;
        return req.Form[Name] != null;
    }
}

Вы можете использовать это в своих действиях, как это

[HttpPost]
[AcceptParameter("submitBtnName")]
public ActionResult Search()
3 голосов
/ 06 ноября 2010

Сброс форм на стороне клиента.

Используйте для кнопки отправки формы.Используйте type = "reset" для кнопки сброса.

В противном случае используйте javascript, чтобы подключить кнопку сброса.

2 голосов
/ 05 ноября 2010

Если кнопки являются тегами INPUT и вы присвоили им значения «name», они будут отправлены обратно в вашу коллекцию FormCollection.Вы увидите «buttonName» = «значение» в вашем массиве.Просто проверьте коллекцию на правильную клавишу, и вы узнаете, какая из них была нажата.

Еще один способ сделать это - скрытый ввод данных в вашей форме, а когда пользователь нажимает кнопку «А», ввести значениев скрытом входе.Если пользователь нажимает кнопку «B», введите другое значение в ваш ввод.Когда вы вернетесь на свой сервер, просто проверьте, какое значение имеет скрытый ввод.

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