花了很多時間,通過在搜索的答案,這個問題類似文章去,這裏是其中的一些:上傳圖像和本地存儲在數據庫中的視圖保存的文件名,顯示MVC 5
1Link, (無法顯示超過2個鏈接,但我有一羣人)
和最相關的 8 Link,但該項目不工作
但是通過這個例子去後,我仍然無法整理出來。目前我的項目沒有圖像,我能夠刪除新的文章頁面並將其刪除。但現在我需要添加圖像。 首先,我需要一個圖像作爲一個類的一部分(我創建一個新的文章,有一些標題,簡短描述,文本正文和圖像),這裏是我想出的模型,這是非工作代碼。因爲我想存儲文件鏈接到數據庫,所以我想我需要創建新的變量ImagePath
namespace PhClub.Models
{
public class Media
{
public int Id { get; set; }
public string title { get; set; }
public string description { get; set; }
[Required, StringLength(2048), DataType(DataType.MultilineText)]
public string body { get; set; }
public string ImagePath { get; set; }
}
}
接下來我需要添加創建表格申請文件名上傳。下面是創建視圖的代碼段
@using (Html.BeginForm("Create", "Medias", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.title, "Title", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.title)
@Html.ValidationMessageFor(model => model.title)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.description, "Description",new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.description)
@Html.ValidationMessageFor(model => model.description)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.body, "Media",new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.body)
@Html.ValidationMessageFor(model => model.body)
</div>
</div>
**<div class="form-group">
File name
<div class="uploadfile">
@Html.TextBoxFor(model => model.file, new { type = "file" })
@Html.ValidationMessageFor(model => model.file)
<input type="submit" value="Submit" />
</div>
</div>**
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Создать" class="btn btn-default" />
</div>
</div>
</div>
}
但是在這裏我有兩個不確定性:1。 我已經有一個Create方法,在控制器,它是由EF對我產生:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,title,description,body")] Media media)
{
if (ModelState.IsValid)
{
db.Medias.Add(media);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(media);
}
但我需要將它用這種方法在某種程度上以某種方式整合(我從其中一個例子這一個)
[HttpPost]
public ActionResult FileUpload(Media mRegister)
{
//Check server side validation using data annotation
if (ModelState.IsValid)
{
//TO:DO
var fileName = Path.GetFileName(mRegister.file.FileName);
var path = Path.Combine(Server.MapPath("~/Content/Upload"), fileName);
mRegister.file.SaveAs(path);
ViewBag.Message = "File has been uploaded successfully";
ModelState.Clear();
}
return View();
}
我不能有兩種方法具有相同的名稱 - 創建做differen一方面和另一方面的東西我不能給它不同的名稱,因爲我不需要其他視圖,它需要顯示在創建視圖,如果我知道這裏發生了什麼。 2.次要 - 我需要有兩個按鈕嗎?一個用於上傳圖像,另一個用於創建對象?
最後,我需要在媒體視圖中以某種方式顯示圖像作爲文章的一部分。目前它看起來像
<h2>@Model.title</h2>
<br>
<div class="media">
<p>
<strong>@Html.Raw(Model.title)</strong>
</p>
<p>
@Html.Raw(Model.description)
</p>
<p>
@Html.Raw(Model.body)
</p>
</div>
<div style ="float:right margin: 0px; 0px; 15px; 15px;">
@Html.Raw(Model.file)
</div>
從這裏我迷路了。我需要在某個地方放置該圖像,但不知道如何。在其他示例中,人們爲文件創建一堆其他類。我需要它嗎?什麼最簡單的方法呢?我知道我不是第一個提出這個問題的人,但我真的可以用你的幫助人。
腳手架只是一個基礎模板。一開始創建一個[視圖模型(http://stackoverflow.com/questions/11064316/what-is-viewmodel-in-mvc),這將包括一個'HttpPostsedFIleBase'屬性,以便可以綁定文件輸入到,並在您的視圖中使用它。在POST方法中,將視圖模型映射到數據模型的實例。 –
解決這個問題需要一段時間。謝謝。 –