Вы должны переопределить hashCode () в каждом классе, который переопределяет equals (). Несоблюдение этого требования приведет к нарушению общего договора для Object.hashCode (), что предотвратит правильное функционирование вашего класса в сочетании со всеми коллекциями на основе хешей, включая HashMap, HashSet и Hashtable.
& nbsp; & nbsp; из Эффективная Java , Джошуа Блох
blockquote>Последовательно определяя
equals()
иhashCode()
, вы можете улучшить удобство использования ваших классов в качестве ключей в хеше основанные на коллекции. Поскольку API-документ для hashCode объясняет: «Этот метод поддерживается в интересах хеш-таблиц, таких как функции, предоставленныеjava.util.Hashtable
».Лучший ответ на ваш вопрос о том, как эффективно реализовать эти методы, предлагает вам прочитать главу 3 из Эффективной Java .
Вам нужно построить URL-адрес, используя javascript / jquery. В представлении измените ссылку на
<a id="export" href=#">Export as CSV</a>
Затем в скрипте
var baseurl = '@Url.Action("Export")';
$('#export').click(function() {
var url = baseurl + '?SelectedAccountType=' + $('#SelectedAccountType').val() + '&FromDate=' + $('#FromDate').val() + '&ToDate=' + $('#ToDate').val() + ...etc
location.href=url;
});
Однако, если ваша форма отмечена FormMethod.Get
, вы можете просто использовать обычный режим отправки и не требуется jquery
@using (Html.BeginForm("Export", "yourControllerName", FormMethod.Get))
{
@Html.TextBoxForm(m => m.SelectedAccountType)
....
<input type="submit" value="Export" />
}