2011-03-01 82 views
2

我在几个不同的方式尝试这样做:为什么我不能在我的用户控件中访问我的viewmodel?

1:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyNameSpace.MyModel>" %> 

2:

<%@ Import Namespace="MyNameSpace.MyModel" %> 

但无论我做什么,我没有this.Model访问或任何我期望看到的东西。项目中的其他控件和页面都可以访问这些内容,而且没有一个开发人员能够告诉我他们为什么可以和我不能。有任何想法吗?

编辑

从那时起,我已经创建了一些控件和页面。有时,intellisense认为this.Model没有问题。它还发现像Html.RenderPartial()和它应该找到的各种其他好东西。所以,对于那些会告诉我智力感知不起作用的人,你错了。它可以。但在所有观点中都不一致。据我和任何其他开发人员可以说,我没有做任何不同的事情。事情我已经尝试:

  • 关闭解决方案
  • 删除后的文件夹建立
  • 重新打开解决方案
  • 重建,无论是定期或分析建立

有时,这些步骤解决问题,但对于一些控件,我不能让红色的波浪线消失!这不是世界末日,因为它不会产生运行时错误,但我想了解这里发生了什么。当然有人已经经历了这一点,并已经知道问题的根源。

+1

的第一个定义是正确的。你如何传递视图模型?你是什​​么意思,你无法访问它?你是否收到错误信息或什么?请稍微描述一下。 –

+6

你在1中缺少一个尖括号。在MyModel后面应该有一个'>'。不知道这是否是一个错字。 –

+2

您的导入的名称空间在“inherits”声明中与您的泛型模型类具有完全相同的名称。导入应该只是“MyNameSpace”。 –

回答

3

您也可以尝试将其添加到web.config:

<namespaces> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="MyHtmlHelperLibrary.HtmlExtensions"/> 
    <add namespace="MyOtherNamespace"/> 
    </namespaces> 
+0

产品无法访问Platform的Web.config。 (还是)感谢你的建议。 – Samo

+0

@Samo - ?你的评论没有意义?你是说你没有物理访问web.config文件? – Rob

+0

是的。我的产品建立在一个旨在用作多种产品平台的解决方案上。产品不得触及平台解决方案中的任何代码。 – Samo

相关问题