2012-06-05 38 views
7

Vấn đề là: Tôi muốn chạy 3 hành động khác nhau nhưng thay vào đó tôi muốn cho tất cả dữ liệu từ một hành động trong một mô hình lớn hơn.Làm thế nào để vượt qua nhiều mô hình trong xem trong ASP.NET MVC?

Tôi đang sử dụng:

public class SearchScrapClass 
    { 
     public WClass WClass { get; set; } 
     public SClass SClass { get; set; } 
     public YClass YClass { get; set; } 
    } 

    public class WClass 
    { 
     public string title { get; set; } 
     public string link { get; set; } 
    } 
    public class SClass 
    { 
     public string title { get; set; } 
     public string link { get; set; } 
    } 
    public class YClass 
    { 
     public string title { get; set; } 
     public string link { get; set; } 
    } 

Tôi đang sử dụng LINQ để thêm dữ liệu trong các mô hình này.

Tôi đang sử dụng:

 var wikians = from info in document.DocumentNode.SelectNodes("//div[@id='span']") 
     from link in info.SelectNodes("div//a").Where(x => x.Attributes.Contains("href")) 
     select new SearchScrapClass //Main Bigger Class 
     { 
      WClass.link= link.Attributes["href"].Value, //ERROR: How to add to WClass's url ? 
      WClass.title= link.InnerText //ERROR: How to add to WClass's url ? 
     } 


var wikians = from info in document.DocumentNode.SelectNodes("//div[@id='results']") 
       from link in info.SelectNodes("p//a").Where(x => x.Attributes.Contains("href")) 
       select new SearchScrapClass //Main Bigger Class 
       { 
        YClass.link= link.Attributes["href"].Value, //ERROR: How to add to YClass's url ? 
        YClass.title= link.InnerText //ERROR: How to add to YClass's url ? 
       } 

//Also for the 3rd class (model) 


    return View(wikians); //and then return bigger class model so that i can access them in view 

Đây là một cách tôi muốn thêm dữ liệu vào liên kếttiêu đề của tất cả các lớp học.

thử của tôi là để thêm dữ liệu cho tất cả 3 lớp từ các nguồn khác nhau và vượt qua các mô hình lớn để xem để tôi có thể truy cập vào tất cả các lớp như:

@model SearchScrapClass 
@using(Html.BeginForm()) { 
    @Html.EditorFor(o => o.WClass.link) 
    ... 
} 

Xin gợi ý một cách

Cảm ơn

+4

tạo ra một viewmodel mà gắn cả ba mô hình với nhau và gõ nhằm viewmodel đó. – Brian

+0

Tôi bối rối là tại sao bạn có 3 lớp khác nhau mà tất cả đều giống nhau? Tại sao không chỉ sử dụng 3 trường hợp khác nhau của cùng một lớp? – hermiod

+0

@hermiod: Actaully logic tôi đã hiển thị có vẻ tương tự [ít được sửa đổi] nhưng nguồn từ nơi họ tìm nạp url và nội dung thì khác. Vì vậy, tôi cần các lớp khác nhau. – Man8Blue

Trả lời

8

Để Mở rộng trên nhận xét của tôi, tôi sẽ khuyên bạn nên tạo một thư mục ViewModel cho tổ chức vì lợi ích. trong tiện ích này mô hình xem

public class SearchScrapClassViewModel 
{ 
    SearchScrapClass searchScrap; 
    WClass wClass; 
    SClass sClass; 
    YClass yClass; 
} 

Trong điều khiển của bạn sau đó bạn nhanh chóng viewmodel mới

SearchScrapClassViewModel model = new SearchScrapClassViewModel 
{ 
    ....add in your logic to fill your class objects here 


} 

return view(model); 

sau đó theo quan điểm của bạn thêm bằng cách sử dụng cho viewmodel.

@using SearchScrapClassViewModel 
+0

Bạn có thể xây dựng trên mặt quan điểm không. Làm cách nào để truy cập từng phần tử w, s, y riêng lẻ trong chế độ xem? – Zapnologica

1

Bạn có thể chuyển nhiều mô hình bằng cách tạo một lớp mô hình mới sẽ chứa nhiều đối tượng.

public class MultiModel 
    { 
    SearchScrapClass searchScrap; 
    WClass wClass; 
    SClass sClass; 
    YClass yClass; 
    } 
+0

Và sau đó làm cách nào để bạn nhận/sử dụng lớp đó trong chế độ xem? – Zapnologica

+0

Brian đã giải thích thêm về điều này, bạn có thể sử dụng Chế độ xem để truy cập từng lớp, ví dụ: @ Model.SearchScrapClass, Modal.WClasss –

0
SearchScrapClassViewModel model = new SearchScrapClassViewModel 
{ 
    ....add in your logic to fill your class objects here 


} 

gì logic, chúng tôi áp dụng ở đây ".... thêm trong logic của bạn để điền lớp học của bạn đối tượng ở đây"

Các vấn đề liên quan