Доброе утро, я изучаю MVC, используя примеры музыкального магазина на странице www.asp.net/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);
}
}
Чтобы немного больше узнать о том, что я делаю, у меня есть общий шаблон для моих просмотров Edit / Create, а в этом общем шаблоне у меня есть всплывающее окно 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");
}