ASP.NET MVC视图访问模型属性报错:Model是属性却被当作类型使用
解决ASP.NET MVC视图中访问模型属性的错误
首先,咱们先拆解你遇到的错误:Mvc.Webviewpage<tmodel>.Model is a property but it used like a type —— 这个错误的核心是你把视图里的Model属性(当前绑定的模型实例)当成类型来用了,咱们一步步调整:
1. 先确认视图顶部的模型声明
你的视图必须明确绑定的模型类型,在视图最顶部加上(如果模型在特定命名空间下,要把命名空间加上):
@model ShoutboxMainViewModel
2. 修正foreach循环的写法
你原来的代码@foreach (Model.ShoutboxObject record in Model)有两个关键问题:
Model.ShoutboxObject:这里的Model是视图绑定的实例对象,不是类型,你应该直接用ShoutboxObject这个类的名称(如果类有命名空间,比如MvcApp.Models.ShoutboxObject,要完整写上)in Model:你的ShoutboxMainViewModel是单个对象,不是集合,你需要遍历它里面的集合属性。假设你的ViewModel里有存储ShoutboxObject的集合属性,比如:
那foreach应该改成:public class ShoutboxMainViewModel { public dynamic DepartmentId { get; set; } // 假设你有这个集合属性来存消息记录 public List<ShoutboxObject> ShoutboxRecords { get; set; } }@foreach (ShoutboxObject record in Model.ShoutboxRecords) { // 这里就能正常访问ShoutboxId属性了 <p>消息ID:@record.ShoutboxId</p> }
3. 额外注意点
- 要确保
ShoutboxObject类里确实定义了ShoutboxId属性,比如:public class ShoutboxObject { public int ShoutboxId { get; set; } // 其他相关属性... } - 如果你的
ShoutboxMainViewModel本身就是一个集合(比如继承自List<ShoutboxObject>),那视图顶部要声明@model List<ShoutboxObject>,然后foreach写成@foreach (var record in Model),再直接访问record.ShoutboxId就行
这样调整后,应该就能正常访问模型属性啦~
内容的提问来源于stack exchange,提问作者ariel
相关产品推荐
相关产品推荐

