モデル層として Entity Framework を使用する MVC3 アプリケーションがあります。
EmployeeController には、次のものがあります。
public ActionResult GetEmployeeEdit(String id)
{
// Get the desired Employee
var model = GetEmployees().FirstOrDefault(o=>o.EFolderid == id);
return View("EmployeeEdit", model);
}
private IQueryable<Employee> GetEmployees()
{
// Returns IQueryable<Employee>
return _employeeService.GetTable();
}
EmployeeEdit には次のものがあります。
@model Metastorm.Domain.Models.Employee
@{
ViewBag.Title = "Employee Edit";
}
@using (Html.BeginForm("SaveEmployee", "Employee", FormMethod.Get, Model))
{
<fieldset>
<legend>Edit Employee</legend>
<br />
@Html.Label("firstName", "First Name: ")
@Html.EditorFor(o => @Model.NameFirst)
<br />
@Html.Label("lastName", "Last Name: ")
@Html.EditorFor(o => @Model.NameLast)
</fieldset>
<br />
<input class="button" id="submit" type="submit" value = "Save Employee" />
}
EmployeeController に戻ります。
[HttpGet]
public ActionResult SaveEmployee(Employee employee)
{
if (ModelState.IsValid)
{
// Get the Employee Model again from Entity, Update and save
// Unfortunately, the employee object's FolderId value is null
}
// Just getting a model to satisfy the function
var model = GetEmployees().FirstOrDefault();
return View("EmployeeEdit", model);
}
私が抱えている問題は、Employee.NameFirst と Employee.NameLast を除いて、employee オブジェクトのすべてのプロパティが null であることです。これらはたまたま Html.EditorFor を使用してビューで公開されたプロパティです。
要約すると、完全にハイドレートされた Employee モデル オブジェクトを取得します。このモデルをコントローラーからビューに渡します。ビューでは、選択したフィールドを更新できます。次に、Employee モデルが Controller に戻され、そこで更新が永続化されます。
私の質問は、もともと Controller から View に渡された Employee モデルをそのまま維持するにはどうすればよいかということです。つまり、モデルが欲しい