Tôi có một biểu mẫu dài mà tôi đã chia nhỏ thành nhiều phần và đang sử dụng @ Html.EditorFor cho từng phần đang hoạt động tuyệt vời nhưng cần suy nghĩ của bạn về cách tiếp cận này có thể cải thiện hay không.Chuyển Bộ sưu tập tới EditorFor trong ASP.NET MVC
Có phân đoạn và mỗi phân đoạn có thể có nhiều hoạt động, vì vậy tôi có một bộ sưu tập phân đoạn và mọi phân đoạn trong bộ sưu tập này chứa một bộ sưu tập các hoạt động.
public class Activity
{
public string ActivityId { get; set; }
public string ActivityDescription { get; set; }
public bool IsSelected { get; set; }
}
public class Segment
{
public string SegmentId { get; set; }
public string SegmentDescription { get; set; }
public List<Activity> Activitites { get; set; }
}
Đây là cách tôi muốn ViewModel mà tôi sử dụng như một mô hình cho quan điểm nên trông giống như nhưng không thể làm cho nó làm việc kể từ khi @ Html.EditorFor không chấp nhận một loại Collection.
public class UserPreferencesViewModel
{
//..... Other Properties
public List<Segment> Segments {get; set;}
}
Đây là ViewModel
@model UserPreferencesViewModel
@{
//... Other Properties
@Html.EditorFor(m => m.Segments) //I assigned Segments three Segments in the Controller Get Method
}
Dưới đây là mẫu EditorFor cho Segments
@model List<Segment>
@{
//... Other Properties
@foreach(var segment in Model)
{
//Do the stuff
}
}
Nhưng điều này không làm việc nói EditorFor không thể lấy bộ sưu tập và các ngoại lệ được ném vào RunTime .
Đây là công việc của tôi Xung quanh. Tôi tạo ra một lớp "UglySegmentWorkAround" có chứa các bộ sưu tập phân đoạn và sau đó trong UserPreferencesViewModel tôi loại bỏ các tài sản danh sách và thay vào đó được xác định một tài sản cho điều đó.
public class UglySegmentWorkAround
{
public List<Segment> Segments {get; set;}
}
public class UserPreferencesViewModel
{
//..... Other Properties
public UglySegmentWorkAround UglySegmentWorkAround {get; set;}
}
và đây là mẫu EditorFor.
@model UglySegmentWorkAround
@{
//... Other Properties
@foreach(var segments in Model.Segments)
{
//Do the stuff
}
}
Nó hoạt động hoàn hảo nhưng tôi không cảm thấy thoải mái với cách tiếp cận này, có điều gì tôi thiếu trong cách tiếp cận đầu tiên không? Làm thế nào điều này nên được thực hiện? Tôi không muốn EditorFor làm một vòng lặp ngầm nếu tôi chuyển cho nó một bộ sưu tập vì tôi đang vẽ một cấu trúc giao diện người dùng phức tạp trong EditorFor và tôi cần EditorFor để có vòng lặp bên trong nó.
Kiểm tra [link] này (http://stackoverflow.com/questions/13420791/mvc-editorfor-not-working-for-collection) –
@HasanFahim I don không muốn viết một vòng lặp for bên ngoài EditorFor như tôi đã đề cập trong câu hỏi của tôi, thay vì giao diện người dùng của tôi yêu cầu tôi lặp lại các bộ sưu tập bên trong Trình soạn thảo. –