Razor View Engine : 표현식 트리에 동적 작업이 포함되어 있지 않을 수 있습니다


173

나는 이것과 비슷한 모델을 가지고있다 :

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

그리고 내 컨트롤러에서 인쇄하려고하는 예외가 발생합니다.

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

이것은 오류입니다 :

Exception: An expression tree may not contain a dynamic operation

누구 든지이 문제를 해결하는 방법에 대한 단서를 줄 수 있다면 정말 감사하겠습니다!


1
MVC3 RC에 있습니까? 또한 제품이 어떻게 보이는지 보여줄 수 있습니까? 나는 MVC3 RC
bmancini

답변:


297

당신이 타이핑하지 않은 견해를 가지고있는 것 같습니다. 기본적으로 MVC3 RC의 면도기보기는로 입력됩니다 dynamic. 그러나 람다는 동적 멤버를 지원하지 않습니다. 모델을 강력하게 입력해야합니다. 보기 파일 상단에 추가

@model SampleModel

11
그것은 나를 위해 그것을 한 대문자 m이었다
whossname

점이 모델을 가지고 있다면 어떨까요?
djack109

92

이 원인의 일반적인 오류는 추가 할 때입니다.

@Model SampleModel

대신 페이지 상단에

@model SampleModel

5
이 답변을 추가해 주셔서 감사합니다! 수년간의 프로그래밍 후에 대소 문자 구분을 잊을 수있는 방법에 놀랍습니다.
brentlightsey 1

1
"@Model"대신 "model"을 사용하는 경우에도 발생할 수 있습니다. 런타임에 빌드되지만 실패합니다.
Dave Remy

8

링크에서 @model에 대한 설명은 발췌 부분을 참조하십시오.

@model(소문자 "m")은 Razor보기에서 예약 된 키워드로서보기 맨 위에 모델 유형을 선언합니다. 네임 스페이스도 넣었습니다. 예 :@model MyNamespace.Models.MyModel

파일에서 나중에 원하는 속성을 참조 할 수 있습니다 @Model.Attribute(대문자 "M").


2
이것은 내 문제였다. 주의 깊게 시청하지 않으면 Visual Studio는 입력하는 내용을 대문자 "M"으로 변환하는 경향이 있습니다. 정말 자극적입니다.
로비

7

보기가 입력 된 것 같습니다 dynamic. 뷰에서 올바른 유형을 설정하면 오류가 사라지는 것을 볼 수 있습니다.


5

이 줄을 사용하기 전에 (html 도우미를 강력하게 입력하십시오)

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

강력한 유형을 보려면 모델을 페이지에 포함시켜야합니다.

@model SampleModel

1

이 오류는 @model 대신 @@ model이 있었기 때문에 발생했습니다 ... 내 경우에는 복사 및 붙여 넣기 오류가 발생했습니다. @model로 변경하면 문제가 해결되었습니다.


0

vb.net에서 @ModelType을 작성해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.