1

私はこのようなコントローラを持っています:

public ActionResult SaveBook(Book coll, HttpPostedFileBase EBook)
{
}

次のように表示します。

@using (Html.BeginForm("SaveBook", "Book", FormMethod.Post,
            new { enctype = "multipart/form-data" }))
{
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Book</legend>

        <table>
            <tr>
                <td>@Html.LabelFor(model => model.Title)</td>
                <td>@Html.EditorFor(model => model.Title)@Html.ValidationMessageFor(model => model.Title)</td>
            </tr>
            <tr>
                <td>@Html.LabelFor(model => model.ISBN)</td>
                <td>@Html.EditorFor(model => model.ISBN)@Html.ValidationMessageFor(model => model.ISBN)</td>
            </tr>
 <tr><td>@Html.LabelFor(model => model.EBook) </td><td>@Html.TextBoxFor(model => model.EBook, new { type = "file", accept = ".pdf" })
    @Html.ValidationMessageFor(model => model.EBook)</td></tr>
        </table>
        <p>
            <input type="submit" value="SaveBook" />
        </p>
    </fieldset>
}

私のモデルは次のようになります:

[Required(ErrorMessage = "Title Required")]
public  String  Title { get; set; }
[Required(ErrorMessage = "ISBN Required")]
public  String  ISBN { get; set; }
public HttpPostedFileBase EBook { get; set; }

しかし、それでも、「EBook」オブジェクトまたはコントローラーの「coll」オブジェクトで、EBook の「null」値から値を取得しています。なにか提案を?

4

3 に答える 3

0

モデルに同じ名前があるため、null になっています。昨日私に起こったことも、そのうちの1つの名前を別のものに変更しました。

以下を試してください:

    <div class="editor-field">
        <input type="file" name="file" />
    </div>

あなたの行動は似ているはずです

public ActionResult SaveBook(Book coll, HttpPostedFileBase file)
{
}
于 2013-09-11T09:59:13.013 に答える
0

今見つけた事実。次のように maxRequestLength を増やします。

  <httpRuntime targetFramework="4.5" maxRequestLength="1048576" />

そしてそれはうまくいきました。

于 2013-09-11T14:44:33.173 に答える