Tôi đã có một biểu mẫu đang đăng những gì có hiệu quả là một từ điển đối tượng để hành động điều khiển của tôi. Vì vậy, chúng tôi nhận được một IEnumerable<EditThemeAttributeModel>
Tại sao hệ thống sản xuất chất kết dính mô hình mvc asp.net.string []
public class EditThemeAttributeModel
{
public string Name { get; set; }
public object Value { get; set; }
}
Khi tôi nhìn vào bộ sưu tập Request.Form tôi thấy những gì tôi mong đợi:
[1] "Attributes[0].Name" string
[2] "Attributes[0].Value" string
[3] "Attributes[1].Name" string
[4] "Attributes[1].Value" string
[5] "Attributes[2].Name" string
[6] "Attributes[2].Value" string
Tuy nhiên, khi tôi cố gắng một nỗ lực để có được giá trị của một trong những EditThemeAttributeModel
nó không phải là một kiểu đơn giản như tôi mong đợi, đó là một mảng chuỗi:
- Value {string[1]} object {string[]}
[0] "#ffffff" string
tôi có thể làm việc này bằng cách sử dụng bộ sưu tập Request.Forms trực tiếp, nhưng chỉ muốn under và hành vi này.
vâng tôi biết điều đó, nhưng đó không phải là câu hỏi. Câu hỏi đặt ra là tại sao trình mô hình tạo ra một mảng chuỗi 'string []' khi chúng ta truyền cho nó một tập hợp các đối tượng. –
Bởi vì theo mặc định, bạn có thể bao gồm nhiều giá trị cho cùng một tên cho một giá trị bài đăng nhất định. 'id = 1 & id = 2 & id = 3' vì bạn không đặc biệt yêu cầu một' chuỗi' nhưng một đối tượng 'chất kết dính mô hình giả định nó có thể là một mảng vì nó không thể chuyển đổi trực tiếp thành kiểu. Việc tạo mảng là cuộc gọi cuối cùng của chất kết dính mô hình bởi vì về cơ bản nó không thể tìm ra những gì bạn thực sự muốn. Tôi muốn thu thập nó làm việc này chỉ để được an toàn. – Buildstarted
Bạn có thể làm theo mã trình kết nối mô hình trong nguồn và xem tại sao chính xác nó đang làm những gì nó đang làm. Tôi đã làm điều này một lúc trở lại để trả lời một câu hỏi tương tự mà tôi đã có khi tạo một mô hình tự động chất kết dính. http://aspnet.codeplex.com/SourceControl/changeset/view/68345#266460 xem 'BindSimpleModel' (chuyển đổi thực tế nằm trong ValueProviderResult) – Buildstarted