對於同一家公司,我們有兩個獨立的前端項目,除了所有的html和css外,它們基本相同。 (同一公司內的不同部門)我試圖添加一個內置於另一個的頁面。 (是的,是的,我知道我們可能應該建立一個應用程序,根據哪個部門的實例正在運行,顯示不同的演示文稿,以便我們不必維護兩個單獨但相同的代碼庫,但我們無法去有這個客戶端。)ASP.NET MVC Html.TextBox不會在運行時編譯 - 相同的文件可以在其他項目中工作
無論如何,我複製了控制器,模型,以及aspx和ascx頁面。我需要改變的是根名稱空間上的名稱。出於某種原因,在第一個項目中成功編譯的特定ascx頁面在第二個項目中失敗。
這裏的錯誤消息:
e:\pathtocode\Web\Views\EmailToFriend\Email.ascx(24): error CS1061:
'System.Web.Mvc.HtmlHelper<MainWeb.Models.EmailToFriend>' does not contain a definition for
'TextBox' and no extension method 'TextBox' accepting a first argument of type
'System.Web.Mvc.HtmlHelper<MainWeb.Models.EmailToFriend>'
could be found (are you missing a using directive or an assembly reference?)
這裏的ASCX代碼:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Form.ascx.cs"
Inherits="MainWeb.Views.EmailToFriend.Form" %>
<%@ Import Namespace="System.Web.Mvc" %>
<table>
<span class="error" style="color: red;">
<%= Model.ErrorString %>
</span>
<tr>
<td>Friend's Name: </td>
<td><%= Html.TextBox("RecipientName", Model.RecipientName)%></td>
</tr>
<tr>
<td>Friend's Email Address: </td>
<td><%= Html.TextBox("RecipientAddress", Model.RecipientEmail)%></td>
</tr>
<tr>
<td>Your Name: </td>
<td><%= Html.TextBox("SenderName", Model.SenderName ?? UserName)%></td>
</tr>
<tr>
<td>Your Email Address: </td>
<td><%= Html.TextBox("SenderAddress", Model.SenderEmail ?? UserEmail)%></td>
</tr>
<tr>
<td>Message</td>
<td><%= Html.TextArea("Message", Model.Message) %></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Send" style="float: right;"/></td>
</tr>
</table>
我一直在把玩一切圍繞我能想到的。 Html.TextBox可以在同一個項目中的其他文件中正常工作,所以我無法弄清楚爲什麼這是吹大塊。
UPDATE
我剛剛發現,在此代碼的項目,VS識別項目爲MVC的Web應用程序,但在第二個地方不起作用,VS沒有認識到它是MVC。至少如果我右鍵點擊一個Views子文件夾,前者有一個'New View'的上下文菜單項,後一個項目沒有這個。
現在我所要做的就是弄清楚如何將它變成一個MVC項目,也許這將解決它。
更新#2
討厭鬼,沒有工作。我修改了Import指令以使用System.Web.Mvc.Html,現在至少intellisense顯示了.TextBox擴展的定義 - 將嘗試重新啓動該框以查看會發生什麼。 :(
最後更新
正如我張貼在評論,我發現了錯誤,它有一個完全不同的文件做的,所以它基本上是我的錯誤,而不是一個代碼問題。:(
這是一個大型項目嗎? 嘗試創建一個新項目並從舊項目遷移東西... – 2009-08-30 10:05:28
不幸的是,這是一個代碼15錯誤=>錯誤的來源是從顯示器大約15英寸。 =:o – 2009-09-09 14:10:42