Ответ 1
Вы можете сделать что-то подобное внутри представления, где вы хотите использовать jquery. Я предполагаю, что имя контроллера - ExportController. Вы также должны разбить модельные переменные или, альтернативно, собрать модель внутри HttpResponseMessage PostExportData(SomeModel model)
каким-либо другим способом.
HTML:
<a class="export">export</a>
JavaScript:
<script>
$('a.export').click(function(e) {
e.preventDefault(); //stop the browser from following
window.location.href = '@Url.Action('Export', 'ExportController', new { property = model.property, property = model.property2 })';
});
</script>
Чтобы использовать POST
function UpdateForm(modelObject) {
if ($('#hidden-form').length < 1)
{
$('<form>').attr({
method: 'POST',
id: 'hidden-form',
action: '@Url.Action('Export', 'Export')'
}).appendTo('body');
}
$('#hidden-form').html('');
for(var propertyName in modelObject) {
$('<input>').attr({
type: 'hidden',
id: propertyName,
name: propertyName,
value: modelObject[propertyName]
}).appendTo('#hidden-form');
}
}
$('a.export').click(function(e) {
e.preventDefault();
var modelObject = { property1 : "property1" };
UpdateForm(modelObject);
$('#hidden-form').submit();
});
Затем вы можете просто отправить #hidden-form
через js, который будет запускать загрузку файла
Обновление:. Это полный пример для публикации, а его не проверяется на наличие опечаток и т.д., поэтому отлаживайте любые незначительные ошибки.