C# ASP.NET MVC2编辑操作正在向数据库添加新条目

C# ASP.NET MVC2编辑操作正在向数据库添加新条目,c#,asp.net-mvc-2,forms,C#,Asp.net Mvc 2,Forms,早上好,我正在使用www.asp.net/MVC页面上的音乐商店示例学习MVC,我的编辑操作在数据库中添加新条目而不是更新现有条目时遇到问题。这是我的编辑操作和HTTPPost编辑 // // GET: /HomeScroller/Edit/5 public ActionResult Edit(int id) { var viewModel = new HomeScrollerViewModel()

早上好,我正在使用www.asp.net/MVC页面上的音乐商店示例学习MVC,我的编辑操作在数据库中添加新条目而不是更新现有条目时遇到问题。这是我的编辑操作和HTTPPost编辑

//
        // GET: /HomeScroller/Edit/5

        public ActionResult Edit(int id)
        {
            var viewModel = new HomeScrollerViewModel()
            {
                ScrollerLink = dataContext.ScrollerLinks.Single(s => s.SlideID == id)
            };

            return View(viewModel);
        }

        //
        // POST: /HomeScroller/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection formValues)
        {
            var scrollerLink = dataContext.ScrollerLinks.Single(s => s.SlideID == id);

            try
            {
                UpdateModel(scrollerLink, "ScrollerLink");
                dataContext.SubmitChanges();

                return RedirectToAction("Index");
            }
            catch(Exception ex)
            {
                var viewModel = new HomeScrollerViewModel()
                {
                    ScrollerLink = scrollerLink,
                    HasError = true,
                    ErrorMessage = ex.Message
                };

                return View(viewModel);
            }
        }
为了给我的工作提供更多的背景信息,我有一个用于编辑/创建视图的共享模板,在这个共享模板上我有一个jQuery弹出窗口,其中有一个用于上传图像的表单。这个“HomeScroller”在主页上播放幻灯片,我已经为管理员制作了一个后端,可以创建新的幻灯片、编辑和删除它们。我遇到的另一个问题是,当我使用第二个表单上传图像时,主表单在帖子背面被清除。如何维护这些字段中的数据?谢谢

编辑:这是我的更新操作的代码

        [HttpPost]
        public ActionResult Upload(HttpPostedFileBase file, FormCollection formValues)
        {
            HomeScrollerViewModel viewModel;
            Regex imageFilenameRegex = new Regex(@"(.*?)\.(jpg|jpeg|png|gif)$");
            if (file.ContentLength > 0)
            {
                if (!imageFilenameRegex.IsMatch(file.FileName))
                {
                    viewModel = new HomeScrollerViewModel()
                    {
                        ScrollerLink = new ScrollerLink(),
                        HasError = true,
                        ErrorMessage = "Image must be .jpg, .jpeg, .png, or .gif"
                    };
                }
                else
                {
                    string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads"), Path.GetFileName(file.FileName));
                    file.SaveAs(filePath);
                    viewModel = new HomeScrollerViewModel()
                    {
                        ScrollerLink = new ScrollerLink()
                        {
                            ImageUrl = "../Uploads/" + file.FileName

                        }
                    };

                    return View("Create", viewModel);
                }
            }
            else
            {
                viewModel = new HomeScrollerViewModel()
                {
                    //ScrollerLink = scrollerLink,
                    HasError = true,
                    ErrorMessage = "Image is empty!? Try Again"
                };
            }
            return View("Create");
        }

我觉得这件事有点迟钝。在我的更新操作中,我返回到“创建”视图,如果我使用“编辑”视图,这是错误的,这就是为什么它添加新对象而不是修改现有对象的原因。另外,我使用TempData[“HomeScrollerViewModel”]存储我的viewmodel,并以此方式传递数据。问题解决了