Я хочу загрузить файл. Я использую MVC3 с бритвой. У меня есть следующий ViewModel:Загрузка файла с MVC3
Public Class ImportL2EViewModel
<Required(AllowEmptyStrings:=False, ErrorMessage:="L2E name required")>
Public Property Name As String
Public Property File As HttpPostedFileBase
End Class
На мой взгляд, я создаю форму:
@Using Html.BeginForm("Import", "L2ECreationWizard", FormMethod.Post, New Dictionary(Of String, Object) From {{"enctype", "multipart/form-data"}})
@<div class="welcome-box acenter">
<div style="display: block; text-align: left; width: 330px; margin: auto;">
<div class="property">
@Html.LabelFor(Function(m) m.Name)
@Html.TextBoxFor(Function(m) m.Name)
</div>
<div class="property">
@Html.LabelFor(Function(m) m.File)
@Html.TextBoxFor(Function(m) m.File, New With {.type = "file"})
</div>
</div>
<div class="actionBar">
<a class="import fright button" href="#">Import</a>
</div>
</div>
End Using
Результирующий HTML выглядит следующим образом:
<form method="post" enctype="multipart/form-data" action="/L2ECreationWizard/Import" novalidate="novalidate">
<div class="welcome-box acenter">
<div style="display: block; text-align: left; width: 330px; margin: auto;">
<div class="property">
<label for="Name">Name</label>
<input type="text" value="" name="Name" id="Name" data-val-required="L2E name required" data-val="true">
</div>
<div class="property">
<label for="File">File</label>
<input type="file" value="" name="File" id="File">
</div>
</div>
<div class="actionBar">
<a href="#" class="import fright button">Import</a>
</div>
</div>
</form>
я отправляю форму к следующему действию метод:
<HttpPost()>
Function Import(vm As ImportL2EViewModel) As ActionResult
' Nothing yet
End Function
После публикации я вижу vm.Name
заполненный, но vm.File
is Nothing
. Request.Files.Count
есть 0
. Что я делаю не так? Я видел подобные вопросы на SO, но ничего не работало для меня. Я теряюсь ...
я сделал именно так, как вы сказали, и 'file' еще' Ничего '. Также 'Request.Files' остается пустым ... Любая идея, почему это происходит? Я использовал fiddler, и я не вижу, чтобы файл передавался ... –
Хорошо. Я знаю, что происходит. Я использовал javascript ajax-вызов, чтобы опубликовать форму, и я забыл об этом. Вам нужно сделать некоторые трюки, если вы хотите опубликовать файл с помощью ajax. Урок выучен. Я принимаю ваш ответ, потому что он заверил меня, что мой код в порядке, и что-то еще должно вызывать неожиданное поведение. –