2013-06-24 24 views
9

Trong ASP.NET MVC và sử dụng Razor, tôi có một View (cha mẹ) gọi một View (con) là một phần. Cả hai đều được đánh máy mạnh mẽ nhưng chúng có kiểu Mô hình khác nhau.Làm cách nào để ngăn chế độ xem chuyển mô hình của nó sang chế độ xem một phần, nhưng thay vì vượt qua null?

Thông thường, trong những trường hợp này, chúng tôi chuyển mô hình một cách rõ ràng từ chế độ xem gốc cho chế độ xem con.

@Html.Partial("Child", Model) 

Chúng tôi cũng có thể chọn không chỉ định rõ ràng Mô hình được thông qua và trong trường hợp đó, Chế độ xem gốc sẽ cố chuyển Mô hình của riêng mình đến Chế độ xem con. Điều này làm việc nếu các loại phù hợp và nó là mong muốn trong nhiều trường hợp.

@Html.Partial("Child") 

Trong trường hợp của tôi, tuy nhiên, Tôi thực sự muốn View mẹ không để cố gắng vượt qua bất cứ điều gì cho đứa trẻ View. Tôi sẽ làm như thế nào?

tôi nghĩ cố gắng vượt qua null một cách rõ ràng:

@Html.Partial("Child", null) 

Nhưng điều này vẫn còn đi mẫu của cha mẹ cho đứa trẻ View, kết quả là một lỗi: The model item passed into the dictionary is of type 'A', but this dictionary requires a model item of type 'B'.

(Như một mặt lưu ý, các Xem trẻ em là Chế độ xem Tạo cho mô hình của nó, đó là lý do tại sao tôi không có một trường hợp nào để chuyển cho nó.)

Trả lời

11

Hãy thử điều này:

@Html.Partial("Child", null, new ViewDataDictionary<ChildType>(childInstance/*this can be null*/)) 
5

Tôi hiểu lý do bạn muốn không vượt qua mô hình để các đầu vào của bạn được dọn sạch ? Nếu đây là trường hợp, bạn có thể vượt qua chứ không phải một mô hình mới để phần này:

@Html.Partial("Child", new Model()) 

Kể từ khi mô hình là mới, nó sẽ không có bất kỳ giá trị dân.

+1

Sắp xếp của . Để chính xác hơn, lý do là vì, khi khung nhìn được gọi ra, không có một cá thể của Model * khái niệm đó *. Tôi cảm thấy không thoải mái khi tạo và truyền một thể hiện của một Mô hình chưa tồn tại và có thể không được cam kết chút nào chỉ để thỏa mãn công cụ xem. –

1

Bạn có thể tạo biểu mẫu tạo không được nhập mạnh ... tạo đầu vào của bạn để đăng một lần bạn sẽ có một mô hình được liên kết trong hành động điều khiển của bạn.

Bây giờ ... với tôi nó không đáng để làm việc chỉ vì sự tinh tế khái niệm của "Mô hình chưa tồn tại" (AKA chưa có trong cơ sở dữ liệu).

Trong trường hợp của tôi, tôi tạo ra các mô hình nộm chỉ để thiết lập giá trị mặc định trong các lĩnh vực nhất định (ví dụ: thiết lập ngày hôm nay, giá trị mặc định trong dropdownlists, vv)

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