2

私はこのHTMLを持っています:

<% using (Html.BeginForm("Upload", "BulkUpload", FormMethod.Post, new { enctype = "multipart/form-data" })) { %>
    <%: Html.TextBoxFor(model => model.UploadFile, new { @type = "file" }) %>
    <%: Html.ValidationMessageFor(model => model.UploadFile, "*") %>
    <%= Html.Button("submit", "Upload", null) %>
<% } %>

そして、このモデル:

public class BulkUploadVM
{
    [DisplayName("File to import")]
    public HttpPostedFileBase UploadFile { get; set; }
}

そして、このコントローラー

[HttpPost]
public ActionResult Upload(BulkUploadVM model)
{
    if (ModelState.IsValid)
    {
        var stream = model.UploadFile.InputStream;

        // Process stream ...
    }

    return View("Index", model);
}

アップロード ファイルはコントローラーに正しくポストされますが、コントローラーがモデル (有効な UploadFile を持つ) を含むビューを返すと、ページのファイルパスが空になりますか?
これはデフォルトの動作ですか? または、何か不足していますか?

4

2 に答える 2

1

Oded が既に説明したように、セキュリティ上の理由から、ファイル アップロードの入力要素から値を設定することはでき ません。RFC 1867このリンク

を参照してください。 ファイル入力タイプは、ユーザーがローカル コンピューターまたはネットワークからファイルをアップロードできるフィールドを作成します。VALUE 属性は初期ファイルの名前を指定しますが、通常、セキュリティ上の予防措置としてブラウザによって無視されます。

于 2011-12-20T19:35:17.413 に答える
0
<% using (Html.BeginForm("Upload", "Home", new { BulkUploadVM = Model }, 
               FormMethod.Post,   new { enctype = "multipart/form-data" })) { %>

    <%= Html.TextBoxFor(model => model.UploadFile, new { @type = "file" }) %>
    <%= Html.ValidationMessageFor(model => model.UploadFile, "*") %>

    <input type="submit" value="Finish" />

    <% } %>

routeValuesオブジェクトを設定します

new { BulkUploadVM = Model }
于 2011-12-12T15:03:55.247 に答える