所以我想編錄我的記錄集合。我也想學習一些MVC。所以我決定在MVC中建立一個記錄編目網站。這就是我的工作方式。使用模型綁定在MVC3中上傳多個文件
我只是沾我的腳趾,但無法弄清楚如何將多個文件上傳到我的SQLCE數據庫。我在這裏打開選項 - 將圖像存儲爲BLOBS或簡單地作爲文件名並將圖像上傳到文件系統。
我簡單的模型是這樣的:
public class Record
{
[ScaffoldColumn(false)]
public int RecordId { get; set; }
[Required(ErrorMessage = "Artist is required")]
public string Artist { get; set; }
[Required(ErrorMessage = "Title is required")]
public string Title { get; set; }
[DisplayName("Release Date")]
[DisplayFormat(DataFormatString = "{0:d}")]
public DateTime ReleaseDate { get; set; }
[Required(ErrorMessage = "Format is required")]
public string Format { get; set; }
public string Label { get; set; }
[DisplayName("Catalogue Number")]
public string CatalogueNumber { get; set; }
public string Matrix { get; set; }
public string Country { get; set; }
public IEnumerable<HttpPostedFileBase> Images { get; set; }
public string Notes { get; set; }
}
我的看法是:
@model Records.Models.Record
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Record</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Artist)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Artist)
@Html.ValidationMessageFor(model => model.Artist)
</div>
// snipped for brevity
<div class="editor-label">
@Html.LabelFor(model => model.Notes)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.Notes)
@Html.ValidationMessageFor(model => model.Notes)
</div>
<div class="editor-field">
<input type="file" name="images" id="image1"/>
<input type="file" name="images" id="image2"/>
<input type="file" name="images" id="image3"/>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
和我的創建方法是:
[HttpPost]
public ActionResult Create(Record record, IEnumerable<HttpPostedFileBase> images)
{
if (ModelState.IsValid)
{
foreach (HttpPostedFileBase image in images)
{
if (image.ContentLength > 0)
{
var fileName = Path.GetFileName(image.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
image.SaveAs(path);
}
}
db.Records.Add(record);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(record);
}
但是,圖像(我的Create方法參數)始終爲空,並且Model.IsValid始終爲false。
這是爲什麼?我嘗試命名我的圖像上傳輸入爲'圖像','圖像','圖像[n]'和圖像總是0.
我真的不想使用任何插件,有沒有簡單的本地MVC方式?我向助手開放!
在此先感謝。
你有一個[HTTPGET],它傳回的初步模型的實例?我看到你有[HttpPost]部分。 – 2012-04-12 22:18:19
@Geovani,是的我有一個[HttpGet]方法只顯示視圖。 – Brett 2012-04-16 08:49:26
在HTTPGET中,您是將它返回給記錄的一個實例,還是隻返回View();你能編輯你的問題併發布HTTGET方法的代碼嗎? – 2012-04-17 19:51:27