広告に関する詳細をアップロードするためのフォームを作成しましたが、画像をアップロードする必要があります。すべての努力の末、データベースで画像列が NULL と表示されます。この問題を解決するにはどうすればよいですか?私は初心者です。
ビューのコード
@using (Html.BeginForm("Create", "Advertisement", FormMethod.Post, new { enctype = "multipart/form-data" })) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Advertisement</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.OwnerID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.OwnerID)
@Html.ValidationMessageFor(model => model.OwnerID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Date)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Date)
@Html.ValidationMessageFor(model => model.Date)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Category)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.Category,(SelectList)ViewBag.CategoryList)
@Html.ValidationMessageFor(model => model.Category)
</div>
**<div class="editor-label">
@Html.LabelFor(model => model.Image)
</div>
<div class="editor-field">
<input type="file" id="MyFile" runat="server" />
@Html.ValidationMessageFor(model => model.Image)
</div>**
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<p>
<input type="submit" value="Post" />
</p>
</fieldset>
}
そして、フォームは以下のようになります
私のモデルでは、Image プロパティに「byte[]」タイプを使用しています。SQL データベースでは、画像列に Varbinary(max) タイプを使用しています。
データベース テーブルのコード
CREATE TABLE [dbo].[Advertisements] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (100) NOT NULL,
[OwnerID] INT NOT NULL,
[Date] DATETIME NOT NULL,
[Category] NVARCHAR (MAX) NOT NULL,
[Image] VARBINARY (MAX) NULL,
[Description] NVARCHAR (200) NOT NULL,
CONSTRAINT [PK_dbo.Advertisements] PRIMARY KEY CLUSTERED ([ID] ASC)
);
コントローラーのアクション
[HttpPost]
[Authorize]
public ActionResult Create([Bind(Exclude = "ID")]Models.Advertisement advertisement) //submits the result
{
if (ModelState.IsValid)
{
var db = new AdvertisementDataContext();
db.Advertisements.Add(advertisement);
db.SaveChanges(); //saved to the database
return RedirectToAction("Index");
}
return Create(); // if there was an error show the form again
}