簡體   English   中英

“@model dynamic”在ASP.NET MVC3 .cshtml頁面中有效嗎?

[英]Is '@model dynamic' valid in an ASP.NET MVC3 .cshtml page?

我正在編寫一個我在Mac OS X上運行的ASP.NET MVC3應用程序。它運行良好,但我有一個未解決的問題。 我正在使用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上都很好用。

在閱讀Scott Gu的這篇文章中的評論 ,我想我明白我可以用@model dynamic取代@model Livestream.LoginModel 當我嘗試它時,它無法在OS X或Linux上運行。

鑒於我在ASP.NET中開發,它可能看起來很瘋狂但我無法訪問帶有.NET的Windows機器來嘗試這一點。 我明顯使用Mono

我應該能夠使用@model dynamic還是我在@model dynamic文章中誤解了Scott? 還有什么我需要做的才能讓它發揮作用嗎? 或者這是Mono中的一個錯誤?

我的應用程序使用的是.NET 4配置文件(CLR 4.0),因此它並不支持動態。 我可以在代碼中的其他位置使用動態。

我得到的實際錯誤是找不到'cshtml'文件。 我相信當視圖無法編譯時會發生這種情況。

編輯 :我在上面添加了“動態dave”來驗證我的視圖確實使用.NET 4語言功能。 所以,我可以使用dynamic而不是@model 我應該能夠嗎?

@model dynamic應該完美無缺。 事實上,Razor視圖引擎默認為@model動態,所以你甚至不需要聲明它,但這樣做也很好。 看起來你遇到的問題與MVC無法找到視圖有關。 你能告訴我們整個錯誤信息嗎?

我創建了一個簡單的示例.cshtml文件,它工作正常:

@model dynamic

@Model.Name

UPDATE

我剛剛注意到你正在使用lambda表達式來生成文本框:

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

您無法執行此操作,因為您無法將動態作為表達式傳遞。 你需要這樣做:

@Html.TextBox("Username")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM