Обработка 2 кнопок отправки действий в одном представлении / форме - ASP.NET MVC 2 RTM - PullRequest
3 голосов
/ 15 марта 2010

У меня есть представление, в котором пользователь может загрузить файл на сервер.

В этом представлении у меня также есть 2 кнопки: одна для загрузки файла, а другая для загрузки последнего импортированного файла.

В моем контроллере я создал 2 метода действий: импорт и экспорт.

Как мне удалось перенаправить каждое нажатие кнопки на правильный метод действия в моем контроллере?

Я пробовал Html.ActionLink:

<%= Html.ActionLink("Upload", "Import", "OracleFile")%>
<%= Html.ActionLink("Download", "Export", "OracleFile")%>

Html.ActionLink не добился цели. Ссылки действия приводили меня к правильным методам действия, но они генерировали запрос GET. Таким образом, Request.Files.Count = 0.

Мне нужен запрос POST.

Примечание: самая интригующая часть заключается в том, что загрузка работала и внезапно перестала работать. Я видел, что у некоторых людей возникает та же проблема с задачами FileUpload, в которых Request.Files всегда пуст. Я думаю, что это пусто, потому что вам нужно сообщение на сервер. Не правда ли?

Ответы [ 3 ]

9 голосов
/ 15 марта 2010

может быть, это даст вам идею:

вид

<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);
            }
        }

Экспорт и Импорт - соответствующие действия

2 голосов
/ 15 марта 2010

Вы должны использовать форму «multipart / form-data» и отправить форму. Нет ActionLink.

<form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
    <input type="file" name="file" id="file" /> 
    <input type="submit" value="Upload" />
</form>
1 голос
/ 15 марта 2010

Чтобы сгенерировать POST-запрос для загрузки, используйте элемент формы «Ввод файла» и просто отправьте сообщение на сервер как обычно.

http://www.w3schools.com/jsref/dom_obj_fileupload.asp

Посмотрите на этот пост от Скотта Хансельмана. http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx

...