Wie laden/anzeigen von Bildern verwenden ASP.net MVC4-mit Entity Framework
Habe ich ein Daten-Modell wie so
public class NewsItem
{
public virtual int Id { get; set; }
public virtual string NewsTitle { get; set; }
public virtual string NewsContent { get; set; }
public virtual byte[] NewsImage { get; set; }
public virtual DateTime DateAdded { get; set; }
public virtual bool IsLive { get; set; }
}
Ich dann die Anzeige dieser Daten über eine Sicht wie folgt:
@model BusinessObject.Domain.NewsItem
<div class="row-fluid">
<h3>
@Html.ValueFor(model => model.NewsTitle)
</h3>
<div class="span5">
<img src="~/Content/images/stock.jpg" />
</div>
<div class="span7">
<p>
@Html.ValueFor(model => model.DateAdded)
</p>
<p>
@Html.ValueFor(model => model.NewsContent)
</p>
</div>
</div>
Ich habe dann speichern Sie die Daten mit Hilfe der _db.SaveChanges() in meinem controller etwa so:
[Authorize]
[HttpPost]
public ActionResult Create(CreateNewsViewModel input)
{
if (ModelState.IsValid)
{
var news = new NewsItem();
news.NewsTitle = input.nTitle;
news.NewsContent = input.nContent;
news.DateAdded = input.nDateAdded;
news.IsLive = input.nIsLive;
Mydb data = new Mydb();
data.NewsItems.Add(news);
data.SaveChanges();
return View("Index", data.NewsItems);
}
else
{
return View(input);
}
}
Derzeit habe ich nicht ein Bild hochladen bit. Wie würde ich das angehen? In meiner db habe ich ein binäres Feld, und meine Daten geben, die in meinem Objekt ein byte[]. Aber ich weiß nicht wohin ich muss um das Bild Hochzuladen?
Brauche ich eine separate Aktion, gibt den Blick? Einige Hinweise auf das wäre großartig.
Cheers
InformationsquelleAutor Andrew Berry | 2013-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie wollen, ein input-Feld vom Typ Datei hochladen, aus der Sicht, und eine Instanz des WebImage zu behandeln, das hochgeladene Bild:
Anzeigen:
Controller:
Zur Anzeige der Bilder aus der Datenbank, werden Sie wollen eine controller-Aktion, ruft das byte-array aus der Datenbank und gibt eine FileAction. Sie können dieses Bild (für das Bild abrufen-controller-action) durch instanziieren von anderen WebImage Instanz der bytearray-Sie abrufen aus der Datenbank:
byte[] toPutInDb = WebImage.GetBytes();
zubyte[] toPutInDb = image.GetBytes();
Also wenn ich die WebImage Sachen in meinem controller in der httppost Aktion legen Sie dann das Feld, das die byte[] value, dann würde begangen werden, die auf die Daten.SaveChanges(). Hört sich gut an. Ich gebe es zu gehen später. Danke für die Antworten Leute.
Meine WebImage.GetImageFromRequest immer null zurück. Irgendwelche Gedanken auf, warum?
Dieses ignorieren, ich brauchte, um eine überlastung auf meiner Html.BeginForm @@using (Html.BeginForm("Erstellen", "ManageNews", FormMethod.Post, new { @@encType = "multipart/form-data" }))
InformationsquelleAutor Rob G
Ich würde so gehen:
in Ihrer model-Klasse:
in Ihrem controller:
Dann in Ihren Ansichten, die Sie haben sollten:
für den upload:
für die Anzeige in der foreach-Zyklus hinzufügen:
vergessen Sie nicht, fügen Sie
enctype = "multipart/form-data"
imHtml.BeginForm
Ich hoffe, dass dies helfen würde.
InformationsquelleAutor Миле Милошески
Haben Sie einen Blick auf jquery file uploader
Finden Sie Beispiel-code für es
Hoffe, das hilft
InformationsquelleAutor makambi