2011-09-22 93 views
0

在VS2010中處理MVC項目時,我一直被困在相同的DropDownList問題上。因爲當我所有相關的代碼複製到一個全新的,空白的項目,二審實際運行完全,準確地產生的結果我希望這個問題已經變得更加令人沮喪的現在...Visual Studio MVC奇怪?

控制器:

<HandleError()> _ 
Public Class HomeController 
    Inherits System.Web.Mvc.Controller 

    Function Index() As ActionResult 
     ViewData("Message") = "Welcome to ASP.NET MVC!" 

     Return View() 
    End Function 

    Function About() As ActionResult 

     Dim configList As List(Of String) = New List(Of String) 
     configList.Add("10GBaseLX4") 
     configList.Add("10GFC") 
     configList.Add("10GigE") 
     configList.Add("100BaseFX") 
     configList.Add("Test") 

     ViewData("cprotocols") = New SelectList(configList) 
     Return View() 

    End Function 
End Class 

查看:

<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

<asp:Content ID="aboutTitle" ContentPlaceHolderID="TitleContent" runat="server"> 
    About Us 
</asp:Content> 

<asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <h2>About</h2> 
    <p> 
     <% Using Html.BeginForm()%> 
     <%= Html.DropDownList("cprotocols") %> 
     <% End Using %> 
    </p> 
</asp:Content> 

的頁面沒有做任何事情,現在除了簡單地顯示出與硬編碼在控制器中的選項的下拉列表,但我不打算連寫作的邏輯打擾當我目前的網站參考用於甚至向用戶顯示列表。

錯誤消息是There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'cprotocols'.但是當我將這一位代碼複製到空白解決方案時,再次沒有運行時錯誤。

任何想法如何解決這個甚至任何線索是什麼導致這種不一致?我不想將當前項目中的所有其他文件複製到新的文件中,只是爲了讓問題再次顯示在某處(當代碼只有一半時會發生這種情況...)

回答

0

原來,這是模塊的問題;代碼本身很好。我不得不刪除臨時ASP.NET文件,清理我的GAC,以及在我的項目中清除當前所有組件引用,清理解決方案,重新添加所需的引用,最後清理並重建。我仍然不清楚爲什麼VS2010是指舊版本的程序集(僅僅是清理和重建是不夠的)。我也不知道環境在什麼時候停止「提神」,並決定簡單地引用陳舊的構建。我會試着對這一點做更多的研究,然後加入到這篇文章中。

0

我會嘗試更改ViewData鍵名稱,看看是否有助於任何地方。如果沒有,如果你可以創建一個新項目並將所有現有的模型/控制器/視圖類複製到另一個項目中,這看起來像是你的項目配置中可能已經失效的東西。

希望這會有所幫助:)

+0

說實話,當我用'protocols'替換我的第一個項目中的'cprotocols'的所有實例時,這個頁面在它運行的意義上起作用。發生了什麼事是我第一次編碼這個頁面時,我命名ViewData鍵'protocols',並且爲了簡單起見只有兩個選項(10GBaseLX4和100BaseFX)。現在,儘管我的控制器添加了3個新選項,但該列表仍然只顯示了原來的兩個。有一點,我有DDL(ajax)背後的邏輯,它起初是功能性的,但是當我在選擇時更改回發的消息時,頁面會顯示一條舊消息。 – Kevin

+0

這很奇怪,也許你有一些奇怪的緩存正在進行,嘗試運行一個** Clean Solution **,然後從Build菜單運行** Build Solution **,在VS –

+0

中發生同樣的事情。更有趣的是,我已經嘗試了幾乎所有可以考慮的新項目變更(更改ViewData變量名稱,添加選項,刪除選項,更改消息,在新瀏覽器中重新嘗試等),並且所有操作均可用作它甚至應該使用據說在引擎蓋下發生的Ajax緩存,並且偶爾會破壞一些腳本。我想我只會複製我所有的舊代碼。謝謝! – Kevin

相關問題