は、それらのいくつかであります(2つの以上のリンクを表示することができませんが、私はそれらの束を持っている)アップロード画像とDB内のファイル名を保存し、ローカルに保存し、ビューに表示MVC 5
そして、最も関連性の高い 8 Linkが、そのプロジェクトは
が動作していない。しかし、この例を経て、私はまだできない、それを整理します。現時点では、私のプロジェクトはイメージなしで動作し、新しい記事をCRUDしてページングして削除することができます。しかし、今私は画像を追加する必要があります。 まず、クラス(私はいくつかのタイトル、短い説明、テキストの本文と画像で新しい記事を作成しています)の一部としてイメージが必要です。ここで私が思い付いたモデルです。これは動作しないコードです。私はDBへのファイルへのリンクを保存するように、私は新しい変数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; }
}
}
次を作成する必要があると思い、私はそれをアップロードするファイル名を取得するためのフォームを作成、追加する必要があります。
[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);
}
しかし、私:、それは私のためにEFによって生成された 1.私はすでにコントローラー内でCreateメソッドを持っている:ここでは私は2つの不確実性を持っているビューのコードスニペットしかし、ここで
@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>
}
を作成しています私は、同じ名前を持つ2つのメソッドを持つことはできません
[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();
}
(私は例の一つからこの1を取った)何とかこの方法で何とかそれを統合する必要がある - differenをやっCREATE私は他のビューを必要としないので別の名前を付けることはできません。ここで何が起こっているのかを理解するには、Createビューに表示する必要があります。 2.セカンダリ - これには2つのボタンが必要ですか? 1つはアップロードイメージ用、もう1つはオブジェクト作成用です。
最後に、メディアビューで何とか画像を記事の一部として表示する必要があります。現時点ではそれはそのように見える
<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>
ここから私は失われています。私はそのイメージを特定の場所に置く必要がありますが、how.Inを他の例ではファイルのための他のクラスの束を作成している人は分かりません。私はそれが必要ですか?それを行う最も簡単な方法は何ですか?私はこの質問を思い付いたのは初めてではないことを知っていますが、私は本当にあなたの助け人を使うことができます。
足場は基本的なテンプレートに過ぎません。最初に[view model](http://stackoverflow.com/questions/11064316/what-is-viewmodel-in-mvc)を作成します。これには 'HttpPostsedFILEBase'プロパティが含まれているので、ファイル入力をバインドしたり、あなたの視点でそれを使用してください。 POSTメソッドでは、ビューモデルをデータモデルのインスタンスにマップします。 –
このトピックを理解するにはしばらく時間がかかります。ありがとう。 –