c# - '@model dynamic' 在 ASP.NET MVC3 .cshtml 页面中有效吗?

标签 c# asp.net-mvc asp.net-mvc-3 mono razor

我正在编写一个在 Mac OS X 上运行的小型 ASP.NET MVC3 应用程序。它运行良好,但我有一个 Unresolved 问题。我正在使用 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 上都运行良好。

看完this post by Scott Gu中的评论后,我以为我明白我可以用 @model dynamic 替换 @model Livestream.LoginModel。不过,当我尝试它时,它在 OS X 或 Linux 上都不起作用。

考虑到我是在 ASP.NET 中开发的,这可能看起来很疯狂,但我无法访问带有 .NET 的 Windows 机器来尝试这个。我正在使用 Mono显然。

我应该能够使用 @model dynamic 还是我在那篇文章中误解了 Scott?我还需要做些什么才能让它发挥作用吗?或者这是 Mono 中的错误?

我的应用程序使用的是 .NET 4 配置文件 (CLR 4.0),所以它并不是不支持动态。我可以在代码的其他地方使用 dynamic。

我得到的实际错误是找不到“cshtml”文件。我相信当 View 编译失败时会发生这种情况。

编辑:我在上面添加了“dynamic dave”以验证我的 View 确实使用了 .NET 4 语言功能。所以,我可以使用 dynamic 但不能在 @model 中使用。我应该可以吗?

最佳答案

@model dynamic 应该工作得很好。事实上,Razor View 引擎默认为 @model dynamic,因此您甚至不需要声明它,但这样做也很好。看起来您遇到的问题与 MVC 无法找到 View 有关。你能告诉我们整个错误信息吗?

我创建了一个示例 .cshtml 文件,里面只有这个,它运行良好:

@model dynamic

@Model.Name

更新

我刚刚注意到您正在使用 lambda 表达式来生成文本框:

@Html.TextBoxFor(m => m.Username)

您不能这样做,因为您不能将动态作为表达式传递。您需要改为这样做:

@Html.TextBox("Username")

关于c# - '@model dynamic' 在 ASP.NET MVC3 .cshtml 页面中有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366646/

相关文章:

asp.net-mvc - 在 Azure 中使用 DataAnnotations 进行验证显示错误的文本

asp.net - 网站图标-MVC3 ASP.NET

asp.net-mvc-3 - 在 mvc3 中使 Html.Editorfor 字段只读

c# - 即兴 : Could not load type because it attempts to implement a class as an interface

css - 如何修复服务器 MVC 上的 CSS 错误

jQuery Ajax 后 - 404 错误

asp.net-mvc-3 - 无法加载文件或程序集“System.Web.Mvc,版本=3.0.0.0”

c# - 如何正确地将字符串从 Unity 编码到 C/C++?

c# - 如何正确地将字符串传递给ffmpeg?

c# - system.data 列 'invariantname' 被限制为唯一的