Asp.net mvc VisualStudioMVC古怪?

Asp.net mvc VisualStudioMVC古怪?,asp.net-mvc,vb.net,Asp.net Mvc,Vb.net,我在VS2010的一个MVC项目中工作的时候,已经被同样的DropDownList问题困扰了好几天了。现在这个问题变得更加令人沮丧,因为当我将所有相关的代码复制到一个全新的空白项目中时,第二个实例实际上运行得非常完美,并产生了我期望的结果 控制器: <HandleError()> _ Public Class HomeController Inherits System.Web.Mvc.Controller Function Index() As ActionRes

我在VS2010的一个MVC项目中工作的时候,已经被同样的DropDownList问题困扰了好几天了。现在这个问题变得更加令人沮丧,因为当我将所有相关的代码复制到一个全新的空白项目中时,第二个实例实际上运行得非常完美,并产生了我期望的结果

控制器:

<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
_
公共类家庭控制器
继承System.Web.Mvc.Controller
函数Index()作为ActionResult
ViewData(“Message”)=“欢迎使用ASP.NET MVC!”
返回视图()
端函数
函数About()作为ActionResult
Dim configList As List(字符串的数量)=新列表(字符串的数量)
configList.Add(“10GBaseLX4”)
configList.Add(“10GFC”)
configList.Add(“10GigE”)
configList.Add(“100BaseFX”)
configList.Add(“测试”)
ViewData(“cprotocols”)=新的选择列表(配置列表)
返回视图()
端函数
末级
视图:


关于我们
关于

这个页面现在除了简单地显示一个dropdownlist和控制器中显示的硬编码选项外,什么都不做,但是当我的当前站点甚至拒绝向用户显示列表时,我甚至不想费心写逻辑

错误消息是
没有类型为“IEnumerable”且键为“cprotocols”的ViewData项。
但是,当我将这段代码复制到空白解决方案时,同样没有运行时错误


有什么办法可以解决这个问题,甚至有什么线索可以说明是什么导致了这种不一致?我不想将当前项目中的所有其他文件复制到新项目中,只是为了让问题再次在某个地方显现出来(这在代码只中断了一半的情况下必然会发生…)

我会尝试更改ViewData键名,看看这是否有帮助。如果没有,如果可以,您可以创建一个新项目,并将所有现有的模型/控制器/视图类复制到另一个项目上,这看起来像是您的项目配置中可能出现的问题


希望这有点帮助:)

原来是模块有问题;代码本身很好。我必须删除临时ASP.NET文件,清理GAC,以及取消项目中所有当前程序集引用,清理解决方案,重新添加所需引用,最后清理并重建。我仍然不清楚为什么VS2010引用的是来自旧版本的程序集(仅仅清理和重建是不够的)。我也不知道环境在什么时候停止“刷新”并决定只引用过时的构建。我将尝试对这一点做更多的研究,然后添加到这篇文章。

老实说,当我在第一个项目中将
cprotocols
的所有实例替换为
protocols
时,页面在运行的意义上“起作用”。发生的事情是,在我第一次编写此页面时,我将ViewData键命名为
protocols
,为了简单起见,只有两个选项(10GBaseLX4和100BaseFX)。现在,尽管我的控制器添加了3个新选项,列表仍然只显示原来的两个。在某一点上,我有一个DDL(ajax)背后的逻辑,它最初是功能性的,但是当我更改了选择后发布的消息时,页面将显示一个旧消息。这非常奇怪,可能您有一些奇怪的缓存,尝试运行一个干净的解决方案,然后从VSF中的“构建”菜单中构建解决方案。同样的情况也会发生。更有趣的是,我已经尝试了我在新项目中所能想到的所有更改(更改ViewData变量名称、添加选项、删除选项、更改消息、在新浏览器中重新尝试等等)而且,即使使用Ajax缓存,一切都会正常工作。据说,Ajax缓存是在后台进行的,并且偶尔会破坏一些脚本。我想我会把我所有的旧代码都复制过来。谢谢难以置信的新站点现在表现出与旧站点相同的行为。我可能会永远放弃Html帮助程序。也许开发服务器和/或VS存在问题。您是否尝试将网站部署到IIS?您也可以尝试通过控制面板修复VS。
<%@ 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>