2011-09-22 90 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

相关问题