簡體   English   中英

強類型MVC視圖模型

[英]Strongly typed MVC View Model

我試圖強烈鍵入呈現為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"))

由於錯誤的Page指令Inherits attribute值而發生您遇到的錯誤。 指令是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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM