我有这样的控制器:
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”对象或Controller的“coll”对象中获得EBook“null”值的值。有什么建议吗?
答案 0 :(得分:0)
由于模型中有相同的名称,因此您将其设为null。昨天发生在我身上,并将其中一个重命名为其他东西。
请尝试以下操作:
<div class="editor-field">
<input type="file" name="file" />
</div>
您应该采取行动
public ActionResult SaveBook(Book coll, HttpPostedFileBase file)
{
}
答案 1 :(得分:0)
EBook已经是您的模型的属性。将您的操作更改为以下内容,以使模型绑定正常工作:
[HttpPost]
public ActionResult SaveBook(Book coll)
{
}
答案 2 :(得分:0)
我现在发现的事实。我增加了maxRequestLength,如:
<httpRuntime targetFramework="4.5" maxRequestLength="1048576" />
并且有效。