faranakk
جمعه 13 آذر 1394, 22:04 عصر
با سلام خدمت دوستان گرامی
من میخوام کاربران رو ویرایش کنم
من از Identity2 استفاده کردم و در account ViewModel یه ویو مدل ساختم برای ویرایش
public class EditUserViewModel
{
public string Id { get; set; }
[Required]
[Display(Name = "کد ملی")]
public string CodeMelli { get; set; }
[Display(Name = "تصویر آخرین مدرک تحصیلی")]
[Required(ErrorMessage = " این فیلد اجباری است و باید آن را وارد کنید.")]
public string MadrakImag { get; set; }
}
حالا در account Controller هم دو اکشن اینجوری نوشتم
[HttpGet]
public ActionResult UserEdit(string id)
{
var model = UserManager.FindById(id);
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> UserEdit(EditUserViewModel model, HttpPostedFileBase file)
{
const int fiveKb = 200 * 1024;
if (file != null)
{
var fileInfo = new FileInfo(file.FileName);
var fileName = DateTime.Now.Ticks + fileInfo.Extension;
var path = Path.Combine(Server.MapPath("~/images/MadarekTahsili"), fileName);
var notJpgImage = !(fileInfo.Extension.ToLower() == ".jpg" || fileInfo.Extension.ToLower() == ".jpeg");
if (notJpgImage)
{
ModelState.AddModelError("MadrakImag", "پسوند فایل عکس باید jpg یا jpeg باشد");
return View(model);
}
if (file.ContentLength > fiveKb)
{
ModelState.AddModelError("MadrakImag", "حجم فایل نباید بیشتر از 200 کیلوبایت باشد");
return View(model);
}
file.SaveAs(path);
//file.ContentType = "image/jpeg"
model.MadrakImag = fileName;
}
if (ModelState.IsValid)
{
user.CodeMelli= model.CodeMelli;
user.MadrakImag = model.MadrakImag;
Db.Entry(user).State = EntityState.Modified;
await Db.SaveChangesAsync();
return RedirectToAction("UserList");
}
// If we got this far, something failed, redisplay form
return View(model);
}
و در نهایت ویو
@model Models.EditUserViewModel
ولی این ارور رو میده
The model item passed into the dictionary is of type 'System.Data.Entity.DynamicProxies.ApplicationUser _...', but this dictionary requires a model item of type 'EditUserViewModel'.ممنون میشم کسی راهنمایی کنه
من میخوام کاربران رو ویرایش کنم
من از Identity2 استفاده کردم و در account ViewModel یه ویو مدل ساختم برای ویرایش
public class EditUserViewModel
{
public string Id { get; set; }
[Required]
[Display(Name = "کد ملی")]
public string CodeMelli { get; set; }
[Display(Name = "تصویر آخرین مدرک تحصیلی")]
[Required(ErrorMessage = " این فیلد اجباری است و باید آن را وارد کنید.")]
public string MadrakImag { get; set; }
}
حالا در account Controller هم دو اکشن اینجوری نوشتم
[HttpGet]
public ActionResult UserEdit(string id)
{
var model = UserManager.FindById(id);
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> UserEdit(EditUserViewModel model, HttpPostedFileBase file)
{
const int fiveKb = 200 * 1024;
if (file != null)
{
var fileInfo = new FileInfo(file.FileName);
var fileName = DateTime.Now.Ticks + fileInfo.Extension;
var path = Path.Combine(Server.MapPath("~/images/MadarekTahsili"), fileName);
var notJpgImage = !(fileInfo.Extension.ToLower() == ".jpg" || fileInfo.Extension.ToLower() == ".jpeg");
if (notJpgImage)
{
ModelState.AddModelError("MadrakImag", "پسوند فایل عکس باید jpg یا jpeg باشد");
return View(model);
}
if (file.ContentLength > fiveKb)
{
ModelState.AddModelError("MadrakImag", "حجم فایل نباید بیشتر از 200 کیلوبایت باشد");
return View(model);
}
file.SaveAs(path);
//file.ContentType = "image/jpeg"
model.MadrakImag = fileName;
}
if (ModelState.IsValid)
{
user.CodeMelli= model.CodeMelli;
user.MadrakImag = model.MadrakImag;
Db.Entry(user).State = EntityState.Modified;
await Db.SaveChangesAsync();
return RedirectToAction("UserList");
}
// If we got this far, something failed, redisplay form
return View(model);
}
و در نهایت ویو
@model Models.EditUserViewModel
ولی این ارور رو میده
The model item passed into the dictionary is of type 'System.Data.Entity.DynamicProxies.ApplicationUser _...', but this dictionary requires a model item of type 'EditUserViewModel'.ممنون میشم کسی راهنمایی کنه