Я пытаюсь добавить фильтр функциональности, которая отправляет GET запроса на ту же страницу, чтобы фильтровать записи в моей таблице.asp.net MVC ActionMethod вызывая исключения нулевых по параметру
Проблема, с которой я сталкиваюсь, заключается в том, что текстовое поле жалуется на нулевую ссылку на объект, когда параметр не передан. Например, когда человек сначала просматривает страницу, URL-адрес равен '/ mycontroller/myaction /'. Затем, когда они применяют фильтр и отправить форму оно должно быть что-то вроде "mycontroller/MyAction? Имя = ...
Очевидно, что проблема возникает с момента, когда значение имя не передается (нуль), то все еще пытаясь привязываться к текстовому поле «имя». Какие-либо предложения о том, что я должен делать по этой проблеме?
UPDATE Я попытался установить атрибут умолчаниюСвойство, но я предполагаю, что это только для значений маршрута, а не строки запроса значения ActionResult MyAction ([умолчаниюСвойство («»)] имя строки)
//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
Я не думаю, что это будет работать, как вы не можете определить ActionResults с тем же именем, то он не будет знать, какой маршрут служить. – David
@David Liddle - вы можете это сделать полностью - до тех пор, пока они принимают разные параметры. Вы не можете определить два с одной и той же сигнатурой, но очень часто бывает два метода: один принимает модель и не принимает никаких параметров. – Fenton
Единственный способ сделать это - предоставить другое имя ActionName в качестве атрибута. Но тогда вам все равно придется использовать разные ссылки - http://stackoverflow.com/questions/436866/can-you-overload-controller-methods-in-asp-net-mvc – David