Я пишу небольшое приложение ASP.NET MVC3, которое я запускаю на Mac OS X. Оно отлично работает, но у меня есть нерешенный вопрос.Я использую синтаксис Razor.Например, это упрощенная версия страницы входа в систему:
@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.
После прочтения комментариев в этого сообщения Скотта Гу я подумал, что понял, что могу заменить @model Livestream.LoginModel
на @model dynamic
.Однако, когда я попробовал его, он не работал ни на OS X, ни на Linux.
Учитывая, что я занимаюсь разработкой в ASP.NET, это может показаться сумасшедшим, но у меня нет доступа к машине с Windows с .NETчтобы попробовать это там.Я использую Mono , очевидно.
Могу ли я использовать @model dynamic
или я неправильно понял Скотта в этом посте?Есть ли что-то еще, что мне нужно сделать, чтобы это работало?Или это ошибка в Mono?
Мое приложение использует профиль .NET 4 (CLR 4.0), поэтому оно не поддерживает динамическое.Я могу использовать динамический код в другом месте кода.
Фактическая ошибка, которую я получаю, заключается в том, что он не может найти файл 'cshtml'.Я полагаю, что именно это и происходит, когда представление не может быть скомпилировано.
EDIT : я добавил «динамический dave» выше, чтобы убедиться, что мои представления действительно используют языковые функции .NET 4.Итак, я могу использовать dynamic
, но не в @model
.Должен ли я быть в состоянии?