Witam,
otóż piszę apkę internetową (ASP.NET MVC5) i napotkałem problem.
Utworzyłem model Category, CategoryViewModel, CategoryController. Napisałem odpowiednią metodę w kontrolerze (jak poniżej). Klikam elegancko prawym na nazwie metody -> add View -> wybieram jak na pierwszym zdjęciu, -> ok i wyskakuje mi błąd. Nasuwa się pytanie, jak stworzyć widok do CategoryViewModelu, bo jak stworzę do modelu Category i zmienię ręcznie referencje do CategoryViewModel to niby działa, ale przy uploadzie pliku wyskakuje błąd. Tak być nie może. Proszę o podpowiedź.
Screeny:
http://fotserv.pl/?topic=load&image=1458067690-1.JPG
http://fotserv.pl/?topic=load&image=1458067712-2.JPG
Dodam, że dopiero zaczynam przygodę z C#.net. Z góry dzięki za wyrozumiałość i wszelką pomoc.
Model Category:
namespace NESTshop.Models
{
public class Category
{
[Key]
public int CategoryID { get; set; }
[Display(Name ="Nazwa kategorii")]
public string CategoryTitle { get; set; }
[Display(Name ="Opis kategorii")]
public string CategoryDescription { get; set; }
[Display(Name = "Ikona Kategorii")]
public byte[] CategoryFile { get; set; }
public virtual ICollection<Product> Product { get; set; }
}
}
WidokModelu Category:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace NESTshop.Models
{
public class CreateCategoryViewModel
{
[Display(Name ="LP.")]
public int CategoryID { get; set; }
[Required]
[StringLength(100)]
[Display(Name = "Nazwa kategorii")]
public string CategoryTitle { get; set; }
[StringLength(500)]
[Display(Name = "Opis kategorii")]
public string CategoryDescription { get; set; }
[Required]
[Display(Name = "Ikona kategorii")]
public HttpPostedFileBase CategoryFile { get; set; }
}
}
Fragment kontrolera modelu Category:
// GET: Categories/Create
public ActionResult Create()
{
return View(new CreateCategoryViewModel());
}
// POST: Categories/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(CreateCategoryViewModel ccvm)
{
if (ModelState.IsValid)
{
return View(ccvm);
}
byte[] uploadedFile = new byte[ccvm.CategoryFile.InputStream.Length];
ccvm.CategoryFile.InputStream.Read(uploadedFile, 0, uploadedFile.Length);
Category cat = new Category { CategoryTitle = ccvm.CategoryTitle, CategoryFile = uploadedFile };
catRepo.InsertCategory(cat);
catRepo.Save();
return View("Index", catRepo.GetCategory());
}