2011-01-11 5 views
0

Ok.Загрузить файл MVC

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

Я предлагаю код, любые идеи.

<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Cintas.Master" Inherits="System.Web.Mvc.ViewPage(Of iABC.Temp)" %> 

<asp:Content ID="Content4" ContentPlaceHolderID="ContentPlaceHolderContenido" runat="server"> 
<%=Html.ValidationSummary("Se produjeron errores al procesar la solicitud. Revise los errores e intente nuevamente.")%> 

<% Using (Html.BeginForm("CargarArchivos", "ProcesosAutomaticos", FormMethod.Post, New With {.enctype = "multipart/form-data"}))%> 
    <input type="file" name="abc" id="abc" /> 
    <input type="submit" value="Submit Button" /> 
<% End Using%> 
</asp:Content> 



<AcceptVerbs(HttpVerbs.Post)> _ 
Function CargarArchivos(ByVal abc As HttpPostedFileBase) As ActionResult 
    ' But abc always is Nothing 
    ' Continue code 
End Function 

С уважением.

+0

какие-либо ошибки? .... –

ответ

0

Хорошо.

Проблема в том, что я использую MasterPages, поэтому в MasterPage у меня уже есть тег < form>. Я просто добавить ENCTYPE = «многослойные/форму-данные» к основной форме и удалить перегрузки BeginForm из вторичного зрения

<% Using (Html.BeginForm("CargarArchivos", "ProcesosAutomaticos", New With {.enctype = "multipart/form-data"}, FormMethod.Post))%> 

Спасибо всем. Я надеюсь, что это поможет кто-то другой

1

Ваш входной файл называется abc так же должны быть ваши действия аргумент:

Function CargarArchivos(ByVal abc As HttpPostedFileBase) As ActionResult 
    If abc IsNot Nothing AndAlso abc.ContentLength > 0 Then 
     abc.SaveAs("C:\" & "a.txt") 
    End If 
    Return View() 
End Function 

Кроме того, вы используете неправильную перегрузку метода BeginForm. Он должен быть this one:

<% Using (Html.BeginForm("CargarArchivos", "ProcesosAutomaticos", Nothing, FormMethod.Post, New With { .enctype = "multipart/form-data" }))%> 

Обратите внимание, как аргументы инвертируются.

Возможно также оформление заказа this blog post от Phil Haack.

+0

Моя ошибка. Фактически имя аргумента в действии - abc. Это потому, что я много чего пробую. Но abc всегда ничего. –

+0

@ Sebastián, см. Мое обновление о неправильном методе BeginForm, который вы используете. Убедитесь, что сгенерированный HTML правильный, и ваша форма имеет правильный атрибут enctype. Не путайте 'routeValues' с аргументами' htmlAttributes'. –

+0

Спасибо за исправление, я изменил метод BeginForm. Но я все еще ничего не вижу в параметре. Я не знаю, нужно ли что-то добавить к global.asax. У меня нет другой идеи –

2

Вы можете использовать следующий код в ваш Вид:

<div id="Componentsdiv"> 
@using (Html.BeginForm(<action>, <Controller>, FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    <fieldset> 
     <legend>Upload TXT File</legend> 

     <div class="editor-label"> 
      <fieldset> 
      <legend>File</legend> 
       @Html.TextBoxFor(m => m.File1, "Select new file", new { id="firstfile", type = "file"}) 
       @Html.ValidationMessageFor(m => m.File1) 
      </fieldset> 
     </div> 
     <p> 
      <input type="submit" id="submitbutton" hidden="hidden"/> 
     </p> 
    </fieldset> 
} 
</div> 

Где File1 является объектом HttpPostedFileBase.

Первоисточник на snip2code: Upload File

Смежные вопросы