Кажется, я получаю сообщение об ошибке при попытке изменить выпадающее меню даже до загрузки страницы. Вот ошибка: Исключение типа «System.InvalidOperationException» произошло в System.Web.Mvc.dll, но не было обработано в коде пользователяКак получить выбранный элемент из раскрывающегося списка в режиме редактирования в asp.net mvc
Дополнительная информация: Элемент ViewData с ключом «Менеджер» имеет тип «System.String», но должен иметь тип «IEnumerable».
Все, что я пытаюсь сделать, это получить выбранный элемент списка из выпадающего списка. Я хочу, чтобы он заполнялся так же, как и при создании accept, выбранный элемент, который я выбрал в Create, появился в Edit. Вот мой код:
Модель:
namespace NewHireApp1.Models
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using System.ComponentModel;
public partial class NewHire
{
public int ID { get; set; }
[DisplayName("Manager Email")]
public string Manager { get; set; }
public string Managers_Email { get; set; }
public string HR_Emp { get; set; }
public string Emp_FirstName { get; set; }
public string Emp_LastName { get; set; }
public Nullable<System.DateTime> Emp_StartDate { get; set; }
public string Emp_OfficeLocation { get; set; }
public string Emp_Department { get; set; }
public string Emp_Title { get; set; }
public SelectList ADList { get; set; }
}
}
Контроллер:
[HttpGet]
public ActionResult NewHire(NewHire objadmodel)
{
/*Getting data from database*/
List<ActiveDirectory> objadlist = (from data in objentity.ActiveDirectories select data).ToList();
objadmodel.ADList = objadlist.Select(m => new SelectListItem { Value = m.mail, Text = m.mail });
return View(objadmodel);
}
public ActionResult NewHireEdit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
NewHire newhire = _entities.NewHires.Find(id);
List<ActiveDirectory> objadlist = (from data in objentity.ActiveDirectories select data).ToList();
newhire.ADList = objadlist.Select(m => new SelectListItem { Value = m.mail, Text = m.mail });
ViewBag.ADList = objadlist.Select(m => new SelectListItem { Value = m.mail, Text = m.mail });
if (newhire == null)
{
return HttpNotFound();
}
return View(newhire);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult NewHireEdit(NewHire newhire, int? id)
{
if (ModelState.IsValid)
{
_entities.Entry(newhire).State = EntityState.Modified;
_entities.SaveChanges();
return RedirectToAction("NewHireDetails", this.RouteData.Values);
}
return View(newhire);
}
Вид:
<div class="form-group">
@Html.LabelFor(model => model.Manager, "Hiring Manager Email:", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.Manager, Model.ADList, String.Empty, htmlAttributes: new { @id = "ddlAD", @style = "width:500px;", @class = "form-control" })
@Html.ValidationMessageFor(model => model.Manager, "", new { @class = "text-danger" })
</div>
</div>
Что я могу возможно делать неправильно, что я не могу получить выбранный элемент ? Я новичок в MVC, так что это заставляет меня заблуждаться, что я не могу понять это для жизни меня. Заранее благодарим за любые отзывы.
Я все еще получаю ту же ошибку. Я только что пересмотрел свой код выше. Он все еще не работает. Я думаю, может быть, я не помещаю код в нужное место. Пожалуйста помоги. Благодарю. – sshackles
Получил. Спасибо. Пересмотренный код выше с ответом. – sshackles