مشکل هنگام ویرایش اطلاعات با ef و mvc
کدهای ویرایش :
public ActionResult Update(FormCollection form)
{
InstituteDBContext db = new InstituteDBContext();
var query = db.User.Where(u => u.UserID == Int32.Parse((form["id"]).ToString())).SingleOrDefault();
query.UserFirstName = form["UserFirstName"];
query.UserLastName = form["UserLastName"];
db.SaveChanges();
return RedirectToAction("index");
}
پیغام خطا :
LINQ to Entities does not recognize the method 'Int32 Parse(System.String)' method, and this method cannot be translated into a store expression.
نقل قول: مشکل هنگام ویرایش اطلاعات با ef و mvc
var id = var query = Int32.Parse((form["id"]).ToString()));
var query = db.User.Where(u => u.UserID == id).SingleOrDefault();
نقل قول: مشکل هنگام ویرایش اطلاعات با ef و mvc
var id = Int32.Parse((form["id"]).ToString()));
var query = db.User.Where(u => u.UserID == id).SingleOrDefault();
نقل قول: مشکل هنگام ویرایش اطلاعات با ef و mvc
این به ذهن خودمم رسید اما این پیغام خطا رو میده ؟
Object reference not set to an instance of an object
نقل قول: مشکل هنگام ویرایش اطلاعات با ef و mvc
چرا FormCollection دریافت می کنید؟
وقتی مدل UserProfile رو داریم دقیقا این مدل (یا مدلی شبیه به این بنویسید مورد هایی که کاربر اجازه تغییرات رو داره بنویسید) رو ارسال و دریافت کنید تا تبدیل های بی مورد انجام ندهید. این تبدیل ها در کل بهینه نیستند.
برای مثال:
[HttpPost]
public ActionResult Edit(int id, Admin_MenuCreateOrEditModel model)
{
if (ModelState.IsValid)
{
var item = context.MenuModels.Find(id);
item.IsActive = model._Model.IsActive;
item.PageId = model._Model.PageId;
item.MenuDescription = model._Model.MenuDescription;
item.MenuName = model._Model.MenuName;
item.SortId = model._Model.SortId;
item.ParentId = model._Model.ParentId;
context.Entry(item).State = EntityState.Modified;
context.SaveChanges();
}
return RedirectToAction("Index");
}
از طرفی دستور
InstituteDBContext db = new InstituteDBContext();
رو هم در ابتدای کنترلر به صورت سراسری تعریف کنید.
public class MenuController : Controller
{
private readonly MyWebsiteDbContext context = new MyWebsiteDbContext();
نقل قول: مشکل هنگام ویرایش اطلاعات با ef و mvc
شما به جای تبدیل فیلد به int کافی است که فیلد id را به اکشن edit ارسال کنید
public ActionResult Edit(int id
نقل قول: مشکل هنگام ویرایش اطلاعات با ef و mvc
از نظر من همون کار بهتر این که FormCollection رو ارسال کنید.آخه کد ویرایشه باید FormCollection باشه که بتونه آپدیت کنه از روش دیگه ولیکن بیاید ویو ویرایش رو از جنس مدلتون بسازید(که فیلد id توش integer هستش) که دیگه نیازی به تبدیل رشته به عددم نباشه.درست شبیه چیزی که آقای ali autumnal گفتن.