Razor View Engine: Bir ifade ağacı dinamik bir işlem içeremez


173

Buna benzer bir model var:

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

Denetleyicimde yazdırmaya çalışırken bir istisna alıyorum

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

Bu hata:

Exception: An expression tree may not contain a dynamic operation

Herkes bana bu düzeltmek için bazı ipuçları verebilir gerçekten takdir ediyorum!


1
Bu MVC3 RC'de mi? Ayrıca bize Ürün neye benzediğini göstermek? MVC3 RC'de çoğaltamadım
bmancini

Yanıtlar:


297

Bana öyle geliyor ki, türlenmemiş bir görüşünüz var. Varsayılan olarak, MVC3 RC'deki ustura görünümleri olarak yazılır dynamic. Ancak lambdalar dinamik üyeleri desteklemez. Modelinizi kuvvetle yazmalısınız. Görünüm dosyanızın üst kısmına ekleyin

@model SampleModel

11
benim için yapan bir büyük harf m
whossname

eğer bir modeliniz varsa?
djack109

92

Bunun nedeni olan yaygın bir hata,

@Model SampleModel

sayfanın üst kısmında değil

@model SampleModel

5
Bu yanıtı eklediğiniz için teşekkürler! Yıllar süren programlamanın ardından büyük / küçük harfe duyarlılığı nasıl unutabileceğiniz şaşırtıcı.
brentlightsey

1
Ayrıca, inşa edilecek ancak çalışma zamanında başarısız olacak "@Model" yerine "model" kullanırsanız da olabilir.
Dave Remy

8

Bu linkte model hakkında açıklama yapın, bir alıntıya bakın:

@model(küçük harf "m"), jilet görünümlerinde görünümünüzün en üstündeki model türünü bildirmek için ayrılmış bir anahtar kelimedir. Ad alanını da koydunuz, örneğin:@model MyNamespace.Models.MyModel

Dosyanın daha sonra istediğiniz özelliğe başvurabilirsiniz @Model.Attribute(büyük harf "M").


2
Bu benim sorunumdu. Dikkatli bir şekilde izlemiyorsanız, Visual Studio yazdıklarınızı büyük "M" harfine dönüştürme eğilimindedir. Gerçekten sinir bozucu.
RobbieE

7

Görünüşünüzün yazıldığı anlaşılıyor dynamic. Görünümde doğru türü ayarlayın, hatanın ortadan kalktığını göreceksiniz.


5

Kullanmadan önce (görünüme html yardımcısını güçlü bir şekilde yazın)

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

Güçlü bir görünüm oluşturmak için modelinizi sayfanıza eklemeniz gerekir.

@model SampleModel

1

Bu hata bana oldu çünkü model yerine @@ modelim vardı ... benim durumumda kopyala & yapıştır hatası. Modele geçmek benim için düzeltti.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.