1

私はモデルを持っています(単純化され、無関係なプロパティを削除します):

public class SubmitModel
{
    [Required]
    [DataType("FileUpload")]
    [Display(Name = "Formatted Data File")]
    public HttpPostedFileBase FormattedDataFile { get; set; }
}

コントローラー:

[HttpPost]
public ActionResult Submit(SubmitModel model)
{
    if (this.ModelState.IsValid)
    {
        //...
    }

    return this.View(model);
}

FileUploadビュー:

@{
    IDictionary<string, object> htmlAttributes = Html.GetUnobtrusiveValidationAttributes(string.Empty);
}

<input type="file" id="@this.ViewData.TemplateInfo.GetFullHtmlFieldId(string.Empty)" name="@this.ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)" @(new MvcHtmlString(htmlAttributes.ToHtmlAttributesString())) />
@Html.ValidationMessage(string.Empty)

そして簡単なビュー:

@model SubmitModel

@using (Html.BeginForm())
{
    <div class="Form">
        @Html.EditorForModel()

        <div class="Footer">
            <button class="Button" data-options='{ "icons": { "primary": "ui-icon-disk" } }'>Submit</button>
        </div>
    </div>
}

このHTMLにレンダリングするもの:

<form action="/Data/Submit" method="post">
    <div class="Form">
        <div class="Item">
            <div class="Label Required">Formatted Data File:</div>
            <div class="Input">
                <input type="file" id="FormattedDataFile" name="FormattedDataFile"  data-val-required="The Formatted Data File field is required." data-val="true" />
                <span class="field-validation-error" data-valmsg-for="FormattedDataFile" data-valmsg-replace="true">The value &#39;Test.xlsx&#39; is invalid.</span>
            </div>
        </div>

        <div class="Footer">
            <button class="Button" data-options='{ "icons": { "primary": "ui-icon-disk" } }'>Submit</button>
        </div>
    </div>
</form>

をクリックするSubmitと、適切なコントローラー/アクションが表示され、モデルのFormattedDataFileプロパティがnullになります。はModelState無効で、「[フォーマットされたデータファイル]フィールドが必要です」と表示されます。これと同じコードは、私が行ったいくつかのMVC-3プロジェクトで正常に機能しました-MVC-4でこれに関して何か違いはありますか?

4

1 に答える 1

1

私はあなたがenctype="multipart/form-data"フォームに欠けていると思います

http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2

于 2012-11-13T21:08:16.870 に答える