asp.net MVC ActionMethod, вызывающий нулевое исключение для параметра - PullRequest
0 голосов
/ 09 марта 2010

Я пытаюсь добавить функцию filter , которая отправляет запрос GET на ту же страницу, чтобы отфильтровать записи в моей таблице.

Проблема, с которой я столкнулся, заключается в том, что текстовое поле жалуется на пустую ссылку на объект , когда параметр не передан. Например, когда человек впервые просматривает страницу, URL-адрес будет '/ mycontroller / myaction /' . Затем, когда они применяют фильтр и отправляют форму, это должно быть что-то вроде 'mycontroller / myaction? Name = ...'

Очевидно, что проблема возникает из-за того, что значение name не было передано (null), оно все еще пытается привязаться к текстовому полю 'name'. Любые предложения о том, что я должен сделать по этой проблеме?

UPDATE Я попытался установить атрибут DefaultValue, но я предполагаю, что это только для значений маршрута, а не значений строки запроса ActionResult MyAction ([DefaultValue ("")] имя строки)

//Action - /mycontroler/myaction
ActionResult MyAction(string name)
{
    ...do stuff
}

//View
<div id="filter">
    <% Html.BeginForm("myaction", "mycontroller", FormMethod.Get); %>
    Name: <%= Html.TextBox("name") %>
    ....
</div>
<table>...my list of filtered data

Ответы [ 2 ]

0 голосов
/ 11 апреля 2010

Решили реализовать это по-другому, чтобы в поле ввода размещался другой метод действия, который выполнял некоторую работу бизнес-логики, а затем перенаправлял обратно на исходную страницу.

POST-Redirect-GET

0 голосов
/ 09 марта 2010
//Action - /mycontroler/myaction
ActionResult MyAction(string name)
{
    if (name == null) {
        name = string.Empty;
    }
    ...do stuff
}

Или ... добавить перегрузку ...

//Action - /mycontroler/myaction
ActionResult MyAction()
{
     return MyAction(string.Empty);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...