Я полагаю, что причина, по которой вы не получаете правильные значения, заключается в том, что вы используете Html.TextAreaFor
неправильно.Символ x в вашем коде указывает на ваш атрибут Page.Model
, в то время как значение val не связано с этим атрибутом так, как ASP.NET MVC2 может его понять.
Вы можете изменить свой код так, чтобы он выглядел примерно так:
<%using (Html.BeginForm("MeetingTodo", "OA", FormMethod.Post, new { id = "TaskForm" }))
{%><%=Html.Hidden("id",ViewContext.RouteData.Values["id"]) %>
<div class="container">
var ix = 0;
<%foreach (var val in Model.Distinct())
{ %>
<div class="grdrow" >
<div class="grdrightcaption" style="width:173px;" ><%=val.setupEmployee.EmployeeName%></div>
<div class="grdcells" ><%=Html.TextArea(String.Format("employee[{0}].Todo", ix), val.Todo, new { maxlength = 200, style="width:300px;" })%>
<%=Html.Hidden(String.Format("employee[{0}].EmployeeID", ix), val.EmployeeID)%>
</div>
<div class="grdcells" style="width:50px;" >
<%=Html.CheckBox(String.Format("employee[{0}].Required", ix), val.Required)%>
</div>
</div>
<% ++ix
}%>
</div>
<br />
<button type="submit" class="button">save</button>
<%}%>
А затем в объявлении действия украсьте ваши параметры следующим образом:
public ActionResult MeetingTodo([Bind(Prefix = "employee")]Employee[] employees)
Хотя лучше и чище это сделать.
<% for (int i = 0; i < Model.Count(); ++i)
{ %>
<%= Html.HiddenFor(m => m[i].SomeAttribute) %>
<div><%= Html.TextAreaFor(m => m[i].SomeTextAttribute) %></div>
<% } %>