我正在尝试强烈输入呈现为ASP.NET ASPX页面的MVC视图模型。一切都在一个大项目中。但是,它说它找不到名称空间,我做错了什么?
这是错误:
CS0234: The type or namespace name 'MyModel' does not exist in the namespace
'MyProject.Models' (are you missing an assembly reference?)
这是我的自定义模型:
namespace MyProject.Models {
public class MyModel{
public string companyID { get; set; }
public MyModel(string companyID){
this.companyID = companyID;
}
}
}
这是我在ASPX中呈现的强类型视图,文件名为MyStronglyTypedView.aspx:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MyProject.Models.MyModel>" %>
<%@ import namespace='MyProject.Models' %>
.....
<script runat="server">
protected void Page_Load(object sender, EventArgs e) {
var curCompany = Model.companyID;
}
</script>
....
以下是我如何调用页面并将模型传递给它(我在一个单独的Razor页面上将其称为部分):
@Html.Partial("MyStronglyTypedView",new MyProject.Models.MyModel("1"))
答案 0 :(得分:1)
您遇到的错误是由于Page
指令Inherits
属性值不正确而发生的。指令是ASP.NET标记的一部分,因此不是特定于语言的。例如
System.Web.Mvc.ViewPage<MyProject.Models.MyModel>
是如何在C#中指定泛型类型的,但在VB.NET中则是
System.Web.Mvc.ViewPage(of MyProject.Models.MyModel)
总而言之,这里的类型应该用CLR表示法指定。在你的情况下,它可能看起来像
System.Web.Mvc.ViewPage`1[[MyProject.Models.MyModel, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
这就是所谓的完全限定类型名称。要查看特定类型的此名称,可以使用Type.FullName
属性:
Type targetType = typeof(System.Web.Mvc.ViewPage<MyProject.Models.MyModel>);
string name = targetType.FullName;