![](/img/trans.png)
[英]ASP.NET MVC3: DisplayTemplates does not show model value (MVC3 Partial Page)
[英]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.