【发布时间】:2011-03-01 20:54:07
【问题描述】:
我尝试了几种不同的方法:
1:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyNameSpace.MyModel>" %>
2:
<%@ Import Namespace="MyNameSpace.MyModel" %>
但无论我做什么,我都无法访问this.Model 或其他任何我希望看到的东西。项目中的其他控件和页面能够访问这些,并且没有一个开发人员能够告诉我为什么他们的可以而我的不能。有什么想法吗?
编辑
从那时起,我创建了一些控件和页面。有时,智能感知会毫无问题地找到 this.Model。它还可以找到 Html.RenderPartial() 之类的东西以及它应该找到的各种其他好东西。所以,对于那些告诉我智能感知在视图中不起作用的人来说,你错了。确实如此。但在所有观点中并不一致。据我和任何其他开发人员所知,我没有做任何不同的事情。我尝试过的事情:
- 关闭解决方案
- 删除后期构建文件夹
- 重新打开解决方案
- 重新构建,常规构建或分析构建
有时这些步骤可以解决问题,但对于某些控件,我就是无法让红色的波浪线消失!这不是世界末日,因为它不会产生运行时错误,但我想了解这里发生了什么。肯定有人经历过这种情况并了解了问题的根源。
【问题讨论】:
-
第一个定义是正确的。你是如何传递视图模型的?你是什么意思,你不能访问它?你收到错误消息还是什么?请描述得更详细一点。
-
您在 1 中缺少一个尖括号。最后应该有一个
>,在MyModel之后。不知道是不是笔误。 -
您导入的命名空间与“继承”声明中的通用模型类具有完全相同的名称。导入应该只是“MyNameSpace”。
-
或者如果你确实有一个与你的类同名的命名空间,你真的应该改变它。 Eric Lippert 有一篇很棒的博文,说明了原因:blogs.msdn.com/b/ericlippert/archive/2010/03/09/…
-
@Samo,你真的信任 Intellisense 吗?我不。运行应用程序时会发生什么?那是真的。两种可能性:如果您期望得到答案,您将在此处发布错误,或者您的应用程序将运行良好,并且您将永远不会信任 Intellisense、语法突出显示,......在未来。
标签: c# asp.net-mvc user-controls view