在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'.
但是當我將這一位代碼複製到空白解決方案時,再次沒有運行時錯誤。
任何想法如何解決這個甚至任何線索是什麼導致這種不一致?我不想將當前項目中的所有其他文件複製到新的文件中,只是爲了讓問題再次顯示在某處(當代碼只有一半時會發生這種情況...)
說實話,當我用'protocols'替換我的第一個項目中的'cprotocols'的所有實例時,這個頁面在它運行的意義上起作用。發生了什麼事是我第一次編碼這個頁面時,我命名ViewData鍵'protocols',並且爲了簡單起見只有兩個選項(10GBaseLX4和100BaseFX)。現在,儘管我的控制器添加了3個新選項,但該列表仍然只顯示了原來的兩個。有一點,我有DDL(ajax)背後的邏輯,它起初是功能性的,但是當我在選擇時更改回發的消息時,頁面會顯示一條舊消息。 – Kevin
這很奇怪,也許你有一些奇怪的緩存正在進行,嘗試運行一個** Clean Solution **,然後從Build菜單運行** Build Solution **,在VS –
中發生同樣的事情。更有趣的是,我已經嘗試了幾乎所有可以考慮的新項目變更(更改ViewData變量名稱,添加選項,刪除選項,更改消息,在新瀏覽器中重新嘗試等),並且所有操作均可用作它甚至應該使用據說在引擎蓋下發生的Ajax緩存,並且偶爾會破壞一些腳本。我想我只會複製我所有的舊代碼。謝謝! – Kevin