ASP.Net MVC 4 でアプリを開発していて、フォームに画像をアップロードしようとしています。私が抱えている問題は、フォーム<input type="file"...
が空の場合 (ファイルを選択していないことを意味します)、フォームが投稿されたときにフォームが正常に投稿され、すべてが機能することです。ただし、ファイルを選択すると、フォームはそこに座って何もしません。
最初は、アップロードに時間がかかるだけだと思っていましたが、かなり長い間放置していました (ファイルサイズは 7kb) 何もありませんでした。デバッガーは、アクションの開始時にブレークポイントにもヒットしません。私はプラットフォームにまったく慣れておらず、毎日学んでいるので途方に暮れています。以下に、関連するすべてのコードを見つけてください。
景色:
@using (Html.BeginForm("StaffInformation", "Manager", FormMethod.Post, new { @class = "form-horizontal", enctype = "multipart/form-data"}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="control-group">
@Html.LabelFor(model => model.firstName, new { @class = "control-label" })
<div class="controls">
@Html.TextBoxFor(model => model.firstName, new { @class = "span12" })
@Html.ValidationMessageFor(model => model.firstName)
</div>
</div>
<div class="control-group">
@Html.LabelFor(model => model.lastName, new { @class = "control-label" })
<div class="controls">
@Html.TextBoxFor(model => model.lastName, new { @class = "span12" })
@Html.ValidationMessageFor(model => model.lastName)
</div>
</div>
<div class="control-group">
Staff Photo:
<div class="controls">
@if (Model.staffImage == null)
{
@:None
}else{
<img width="150" height="150" src="@Url.Action("GetImage", "Manager", new { Model.staffProfileID })" /><br />
}
<input type="file" id="staffImage" name="staffImage" data-provide="fileinput">
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">Save changes</button>
<a href="@Url.Action("dashboard", "manager")" class="btn" type="reset" >Cancel</a>
</div>
}
アクション:
public ActionResult StaffInformation(StaffInformationViewModel model, HttpPostedFileBase staffImage)
{
if (ModelState.IsValid) //This is where the breakpoint is
{
if (staffImage != null) {
model.imageMimeType = staffImage.ContentType;
model.staffImage = new byte[staffImage.ContentLength];
staffImage.InputStream.Read(model.staffImage, 0, staffImage.ContentLength);
}
using (var repo = new CompanyInformationRepository(new UniteOfWorkCompanies()))
{
var company = repo.FindCompany(User.Identity.Name);
repo.AddOrUpdateStaff(model, company);
}
return RedirectToAction("ManageStaff");
}
}
何が起こっているのか本当にわかりませんenctype = "multipart/form-data"
.Adam Freemanによる「Pro ASP.NET MVC 4」を読んでいて、それなしでは動作しないと彼らが言ったからです。私が言ったように、私はまったく新しいので、私が得ることができるすべての助けが必要です.