Обработка 2 кнопок отправка действий в одном представлении / форме - ASP.NET MVC 2 RTM
-
20-09-2019 - |
Вопрос
У меня есть представление, в котором пользователь может загрузить файл на сервер.
В этом представлении у меня также есть 2 кнопки:один для загрузки файла, а другой для загрузки последнего импортированного файла.
В моем контроллере я создал 2 метода действий:Импорт и экспорт.
Как мне удалось перенаправить каждое нажатие кнопки на соответствующий метод действия в моем контроллере?
Я пробовал Html.ActionLink:
<%= Html.ActionLink("Upload", "Import", "OracleFile")%>
<%= Html.ActionLink("Download", "Export", "OracleFile")%>
HTML.ActionLink не справился с задачей.Ссылки на действия приводили меня к правильным методам действия, но они генерировали запрос GET.Этот способ запроса.Файлы.Количество = 0.
Мне нужен запрос POST.
Примечание:самая интригующая часть заключается в том, что загрузка работала, и внезапно она перестала работать.Я видел, что у некоторых людей возникает та же проблема с задачами FileUpload, в которых запрос.Files всегда пуст.Я думаю, что он пустой, потому что вам нужна запись на сервер.Не так ли?
Решение
может быть, это натолкнет вас на мысль:
Вид:
<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
<input type="file" name="file" id="file" />
<input type="submit" name= "submitImport" value="Upload" />
<input type="submit" name = "submitExport" value="Download" />
</form>
контроллер:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Action (FormCollection formCollection)
{
if (formCollection["submitImport"] != null)
{
return Import(formCollection);
}
if (formCollection["submitExport"] != null)
{
return Export(formCollection);
}
}
в Экспорт и Импорт являются ли соответствующие действия
Другие советы
Вы должны использовать форму "multipart /form-data" и отправить форму.Нет ссылки на действие.
<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
<input type="file" name="file" id="file" />
<input type="submit" value="Upload" />
</form>
Чтобы сгенерировать POST-запрос для загрузки, используйте элемент формы ввода файла и просто отправьте обратно на сервер в обычном режиме.
http://www.w3schools.com/jsref/dom_obj_fileupload.asp
Взгляните на это сообщение в блоге Скотта Ханселмана.http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx