ورود

View Full Version : ویرایش کاربر در Identity با استفاده از view Model



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'.ممنون میشم کسی راهنمایی کنه

hadi0x7c7
سه شنبه 17 آذر 1394, 20:51 عصر
user توی خط 53 و 54 از کجا اومده؟

bahar0011
چهارشنبه 18 آذر 1394, 08:21 صبح
"UserManager.FindById" این خط کد applicationUser رو برمیگردونه شما لازمه cast انجام بدید و مدل خودتون رو به ویو بفرستید



var model = UserManager.FindById("");
var vm=new EditUserViewModel()
{
Id = model.Id,.....
}
return View(vm);