I am trying to keep dropdownlist selected value if ModelState is not valid
Because i want to keep the data the user selected even if the ModelState is not valid
My code looks like this
Get Method:
[HttpGet]
public ActionResult Edit(int? Id)
{
using (var db = new NewsDatabaseEntities())
{
db.Configuration.LazyLoadingEnabled = false;
var Result = (from n in db.News.Include("Categories")
from c in db.Categories
where n.NewsId == Id
select new { news = n, neweCategories = n.Categories, cate = c }).ToList();
News NewsDetails = (from news in Result
select new News
{
NewsId = news.news.NewsId,
NewsTitle = news.news.NewsTitle,
NewsBody = news.news.NewsBody,
NewsImagePath = news.news.NewsImagePath,
Categories = news.neweCategories
}).FirstOrDefault();
var AllCategories = (from c in Result
select new Category
{
CategoryId = c.cate.CategoryId,
CategoryName = c.cate.CategoryName
}).ToList();
if (NewsDetails != null)
{
var model = new NewsViewModel();
model.NewsId = NewsDetails.NewsId;
model.AllCategories = AllCategories;
model.Categories = NewsDetails.Categories;
model.NewsTitle = NewsDetails.NewsTitle;
model.NewsBody = NewsDetails.NewsBody;
model.NewsImagePath = NewsDetails.NewsImagePath;
Session["AllCategories"] = new MultiSelectList(AllCategories, "CategoryId", "CategoryName", model.Categories.Select(J => J.CategoryId).ToArray());
Session["model"] = model;
return View(model);
}
else
{
return RedirectToAction("Index", "Home");
}
}
return View();
}
Post Method:
[HttpPost]
[ValidateInput(false)]
public ActionResult Edit(NewsViewModel model,FormCollection col)
{
if (!ModelState.IsValid)
{
model = (NewsViewModel)Session["model"];
return View(model);
}
View:
@Html.DropDownListFor(c => c.SelectedCategoriesIds, (MultiSelectList)Session["AllCategories"], new { id = "DropDownList1", multiple = "multiple", @class = "form-control" })