You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的集合属性,比如:
    public class ShoutboxMainViewModel {
        public dynamic DepartmentId { get; set; }
        // 假设你有这个集合属性来存消息记录
        public List<ShoutboxObject> ShoutboxRecords { get; set; }
    }
    
    那foreach应该改成:
    @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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:07:58