0

MyModelDB にアップロードするいくつかのフィールドといくつかのファイルを含む型を作成するアクションが必要です。これは私のビューの一部です:

@using(Html.BeginForm()) {

<fieldset>
 <dl>
    <dt>
  @Html.LabelFor(model => model.Name)
</dt>
<dd>
  @Html.EditorFor(model => model.Name)
  @Html.ValidationMessageFor(model => model.Name)
</dd>
    <dt>
 @Html.LabelFor(model => model.NeededFiles)
</dt>
    <dd>
@foreach(var item in Model.NeededFiles) { 
 <div style="margin:5px;">
       @Html.Label(item.Title)
       <input type="file" name="@item.Name" />
 </div>
}
     </dl>
 </fieldset>
 <input type="submit" value="Create" class="button red" />
}

しかし、アクションの投稿では、ファイルパスを取得するのに問題があります: これは私のアクションです:

[HttpPost]
public ActionResult Create(MyModel ViewModel FormCollection collection, IEnumerable<HttpPostedFileBase> files) {

 //....
 }

Request.Files使用できないので、理由がnullわかりません。また、ファイルIEnumerable<HttpPostedFileBase>はヌルです。次に、から取得しようとするので、FormCollection これを使用します:

   string filePath = collection.GetValue(item.Name).AttemptedValue;

しかしfilePath、ファイルパスではなくファイル名を返しただけで、わかりません。ファイルを選択すると、入力にすべてのパスが表示されますが、取得したい場合はファイル名だけが返されます。私の問題はどこですか?あなたの提案は何ですか?

4

3 に答える 3

1

multipart/form-data を含めるようにビューを変更する必要があります。

@using(Html.BeginForm("YourAction", "YourController", FormMethod.Post, new { enctype = "multipart/form-data" } )) {
   //....
}
于 2012-05-19T13:24:19.823 に答える
1

form タグで enctype を multipart/form-data に設定しましたか? そこが見えない…

それが終わったら、これを見てください:

ASP.NET MVC でファイルをアップロードしようとしています

それはあなたの問題をカバーする必要がありますか?

于 2012-05-16T08:22:26.487 に答える
0

あなたが行方不明のようです

@using(Html.BeginForm("YourAction", "YourController", FormMethod.Post, new { enctype = "multipart/form-data" } )) { //.... }

チェックアウト - http://hozefam.com/post/2012/08/10/Exploring-File-Upload-and-Download-in-MVC-3.aspx

于 2012-08-11T00:44:21.237 に答える