Я пытаюсь получить значение выбранного флажка из базы данных. Когда я нажимаю на кнопку редактирования, все данные извлекаются, но значение флажка не восстанавливается в представлении редактирования.
Это мое представление создания
<div class="form-group">
@Html.LabelFor(model => model.Hobby, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@foreach (var item in Model.AvailableHobbies)
{
<div class="checkbox">
<label>
<input type="checkbox"
name="SelectedHobbies"
value="@item.Value"
Text="@item.Text"
@if (Model.SelectedHobbies.Contains(Int32.Parse(item.Value))) { <text> checked </text> } /> @item.Text
</label>
</div>
}
</div>
@Html.ValidationMessageFor(model => model.Hobby, "", new { @class = "text-danger" })
</div>
Это мой контроллер
public ActionResult Edit(int? id, HttpPostedFileBase file)
{
EmployeeDataAccessLayer objemployee = new EmployeeDataAccessLayer();
objemployee.GetHobby();
if (id == null)
{
return View();
}
Employee emp = objemployee.GetEmployeeData(id);
emp.AvailableHobbies = new MultiSelectList(objemployee.GetHobby(), "Id", "Hobby");
var selectedHobbies = emp.SelectedHobbies;
objemployee.GetHobby();
emp.Id = Convert.ToInt32(id);
if (emp == null)
{
return View();
}
return View(emp);
}
[HttpPost]
public ActionResult Edit(int Id, [Bind]Employee emp, HttpPostedFileBase file)
{
EmployeeDataAccessLayer objemployee = new EmployeeDataAccessLayer();
emp.AvailableHobbies = new MultiSelectList(objemployee.GetHobby(), "Id", "Hobby");
var selectedHobbies = emp.SelectedHobbies;
if (file != null)
{
string pic = Path.GetFileName(file.FileName);
string path = Path.Combine(Server.MapPath("~/Upload/"), pic);
// file is uploaded
file.SaveAs(path);
emp.Photo = "/Upload/" + pic;
objemployee.UpdateEmployee(emp);
}
if (Id != emp.Id)
{
return View();
}
if (ModelState.IsValid)
{
objemployee.UpdateEmployee(emp);
return RedirectToAction("Index");
}
return View(emp);
}
Ниже приведен мой метод
public Employee GetEmployeeData(int? Id)
{
Employee emp = new Employee();
using (SqlConnection con = new SqlConnection(ConnectionString))
{
string sqlQuery = "SELECT * FROM Login WHERE Id= " + Id;
SqlCommand cmd = new SqlCommand(sqlQuery, con);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
emp.Id = Convert.ToInt32(rdr["Id"]);
emp.FirstName = rdr["FirstName"].ToString();
emp.LastName = rdr["LastName"].ToString();
emp.Gender = rdr["Gender"].ToString();
emp.DOB = Convert.ToDateTime(rdr["DOB"]).ToString("yyyy-MM-dd");
emp.Hobby =rdr["Hobby"].ToString();
emp.Photo = rdr["Photo"].ToString();
emp.City = rdr["City"].ToString();
}
}
return emp;
Это мой вид редактирования
<div class="form-group">
@Html.LabelFor(model => model.SelectedHobbies, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@foreach (var item in Model.AvailableHobbies)
{
<div class="checkbox">
<label>
<input type="checkbox"
name="SelectedHobbies"
value="@item.Value"
Text="@item.Text"
@if (Model.SelectedHobbies.Contains(Int32.Parse(item.Value))) { <text> </text> } /> @item.Text
</label>
</div>
}
</div>
@Html.ValidationMessageFor(model => model.SelectedHobbies, "", new { @class = "text-danger" })
Как получить значение выбранного флажка?