Công cụ xem dao cạo: Cây biểu thức có thể không chứa hoạt động động


173

Tôi có một mô hình tương tự như thế này:

public class SampleModel
{
     public Product Product { get; set; } 
}

Và trong bộ điều khiển của tôi, tôi nhận được một ngoại lệ đang cố in ra

@Html.TextBoxFor(p => p.Product.Name)

Đây là lỗi:

Exception: An expression tree may not contain a dynamic operation

Nếu bất cứ ai có thể cho tôi một số manh mối về cách khắc phục điều này, tôi sẽ thực sự đánh giá cao nó!


1
Đây có phải trên MVC3 RC không? Ngoài ra bạn có thể cho chúng tôi thấy sản phẩm trông như thế nào? Tôi đã không thể sao chép nó trong MVC3 RC
bmancini

Câu trả lời:


297

Dường như với tôi rằng bạn có một cái nhìn chưa được khám phá. Theo mặc định, các khung nhìn của dao cạo trong MVC3 RC được gõ là dynamic. Tuy nhiên, lambdas không hỗ trợ các thành viên năng động. Bạn phải gõ mạnh mô hình của bạn. Ở đầu tập tin xem của bạn thêm

@model SampleModel

11
đó là một chữ hoa m đã làm điều đó cho tôi
tên

Điều gì nếu bạn chấm có một mô hình?
djack109

92

Một lỗi phổ biến là nguyên nhân của điều này là khi bạn thêm

@Model SampleModel

ở đầu trang thay vì

@model SampleModel

5
Cảm ơn đã thêm câu trả lời này! Thật tuyệt vời làm sao sau nhiều năm lập trình bạn có thể quên đi sự nhạy cảm của trường hợp.
brentlightsey

1
Cũng có thể xảy ra nếu bạn sử dụng "mô hình" thay vì "@Model" ... sẽ xây dựng nhưng thất bại khi chạy.
Dave Remy

8

Trong liên kết này giải thích về @model, xem đoạn trích:

@model(chữ thường "m") là một từ khóa dành riêng trong chế độ xem Dao cạo để khai báo loại mô hình ở đầu chế độ xem của bạn. Bạn cũng đã đặt không gian tên, vd:@model MyNamespace.Models.MyModel

Sau đó trong tệp, bạn có thể tham chiếu thuộc tính bạn muốn với @Model.Attribute(chữ hoa "M").


2
Đây là vấn đề của tôi. Nếu bạn không xem kỹ, Visual Studio có xu hướng chuyển đổi những gì bạn đang nhập vào chữ "M". Nó thực sự gây khó chịu.
RobbieE

7

Có vẻ như quan điểm của bạn được gõ dynamic. Đặt đúng loại trên chế độ xem và bạn sẽ thấy lỗi biến mất.


5

Trước khi sử dụng (gõ mạnh trình trợ giúp html vào xem) dòng này

@Html.TextBoxFor(p => p.Product.Name)

Bạn nên đưa mô hình của bạn vào trang của bạn để thực hiện chế độ xem kiểu mạnh.

@model SampleModel

1

Lỗi này xảy ra với tôi vì tôi có mô hình @@ thay vì @model ... sao chép và dán lỗi trong trường hợp của tôi. Thay đổi thành @model đã sửa nó cho tôi.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.