Mac OS X에서 실행중인 약간의 ASP.NET MVC3 응용 프로그램을 작성 중입니다. 위대한 기능을 수행하고 있지만 해결되지 않은 질문이 있습니다. 면도기 구문을 사용하고 있습니다. 예를 들어 다음은 로그인 페이지의 단순화 된 버전입니다.'@model dynamic'은 ASP.NET MVC3 .cshtml 페이지에서 유효합니까?
@model Livestream.LoginModel
<!DOCTYPE html>
<html>
<head>
<title>Remote Observation</title>
<link type="text/css" rel="stylesheet" media="all" href="/Content/CSS/main.css" />
</head>
<body>
@{
dynamic dave = "Sign In";
}
<div class='normal center'>
<p><img src='/Content/images/logo.png' /></p>
@using(Html.BeginForm("Login", "Main")) {
<div class='loginBox'>
<p>Username<br />@Html.TextBoxFor(m => m.Username)</p>
<p>Password<br />@Html.PasswordFor(m => m.Password)</p>
<p><input type='submit' value='@dave'></p>
</div>
}
</div>
<script>
document.getElementById('Username').focus();
</script>
</body>
</html>
그래도 문제가 없습니다. Mac OS X과 Linux 모두에서 잘 작동합니다.
this post by Scott Gu의 의견을 읽은 후 @model Livestream.LoginModel
을 @model dynamic
으로 바꿀 수 있다고 생각했습니다. 내가 그것을 시도했지만, 그것은 OS X 또는 리눅스에서 작동하지 않을 것이다.
ASP.NET에서 개발 중이라는 감안할 때 미친 것처럼 보일 수는 있지만 .NET을 사용하는 Windows 컴퓨터에 액세스 할 필요가 없습니다. 나는 분명히 Mono을 사용하고있다.
@model dynamic
을 사용할 수 있어야합니까? 아니면 해당 게시물에서 스콧을 오해 했습니까? 작동 시키려면 내가해야 할 일이 있습니까? 아니면 Mono의 버그입니까?
내 응용 프로그램은 .NET 4 프로파일 (CLR 4.0)을 사용하므로 동적 기능을 지원하지 않습니다. 코드의 다른 부분에서 동적을 사용할 수 있습니다.
실제 오류는 'cshtml'파일을 찾을 수 없다는 것입니다. 보기가 컴파일되지 않을 때 일어나는 일이라고 생각합니다.
EDIT : 위의 "동적 데이브"를 추가하여 내 견해가 실제로 .NET 4 언어 기능을 사용하는지 확인했습니다. 따라서 dynamic
을 사용할 수 있지만 @model
에는 사용할 수 없습니다. 내가 할 수 있어야합니까?
감사합니다. JohnnyO. 귀하의 업데이트가 정확하게되었습니다. 람다를 마술 텍스트로 바꾼다면 괜찮습니다. 멋지다. 내가 그 질문에서 말했듯이, 오류는 그것이 시야를 찾을 수 없다는 것이었다. 진짜 문제는보기가 컴파일되지 않았다는 것입니다. 아마도 .NET은이 경우보다 유용한 오류 메시지를 제공합니다. – Justin