Tôi đang cố gắng để có được quan điểm của mình để đăng một Danh sách quay lại hành động, tuy nhiên nó vẫn giữ nguyên giá trị rỗng.Đăng lên danh sách <modeltype> MVC3
Vì vậy, Mô hình của tôi có Danh sách các đối tượng WeightEntry.
Tập thể dục mẫu
public class Exercise
{
public List<WeightEntry> Entries { get; set; }
public int ExerciseID { get; set; }
public int ExerciseName { get; set; }
}
WeightEntry Mẫu
public class WeightEntry
{
public int ID { get; set; }
public int Weight { get; set; }
public int Repetition { get; set; }
}
Xem My chứa ExerciseName và forloop của WeightEntry đối tượng
@model Mymvc.ViewModels.Exercise
...
<span>@Model.ExerciseName</span>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<table class="left weight-record">
<tr>
<th>Reps</th>
<th>Weight</th>
</tr>
@foreach (var item in Model.Entries)
{
<tr>
<td>
@Html.EditorFor(x => item.Repetition)
</td>
<td>
@Html.EditorFor(x => item.Weight)
</td>
</tr>
}
</table>
<input type="submit" value="Save" />
}
Controller Action (bài viết) Liệu có gì tại chốc lát. Tôi chỉ cố gắng để có được sự ràng buộc làm việc trước khi tôi thêm mã lưu.
[HttpPost]
public ActionResult WeightEntry(Exercise exercise)
{
try
{
//Add code here to save and check isvalid
return View(exercise);
}
catch
{
return View(exercise);
}
}
Tôi đã thấy một vài thủ thuật nhỏ với việc thêm một tử số để tên các yếu tố hình thức được sử dụng trong MVC2 nhưng tôi đã tự hỏi nếu MVC3 là bất kỳ khác nhau? Tôi đã hy vọng nó sẽ tất cả ràng buộc độc đáo với ID là 0 hoặc null nhưng thay vì toàn bộ danh sách là null khi tôi kiểm tra nó sau khi các bài viết hình thức. Bất kỳ trợ giúp được đánh giá cao. Cảm ơn.
Tại sao foreach kết thúc trả về null cho bộ sưu tập? – Coops
@CodeBlend, xem các thuộc tính 'name' của các trường nhập trong HTML được tạo và so sánh nó trong cả hai trường hợp. Sau đó đọc ['bài viết sau'] (http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx) và bạn sẽ hiểu tại sao nó hoạt động với' for' và nó không hoạt động với 'foreach'. –
Holy crap - thực sự hiệu quả. Tôi gửi bia ở đâu? –