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

C# & ASP.NET MVC:如何为模型类临时绑定数据传至视图

实现临时字段传递的三种方案

方案一:使用匿名类型

无需修改原Person模型,构造数据时直接创建包含Person属性和temp字段的匿名对象集合,传递给视图即可。

控制器代码:

var listofPersons = new List<object>();
for (int i = 0; i < 5; i++) 
{
    listofPersons.Add(new 
    {
        PersonId = i,
        Name = "", // 根据实际需求赋值
        PhoneNumber = "",
        Email = "555example@stack.co",
        temp = "example" + i
    });
}
return View(listofPersons);

视图中需使用动态类型接收:

@model IEnumerable<dynamic>
@foreach (var item in Model)
{
    <p>@item.PersonId - @item.temp</p>
}

方案二:创建专用视图模型(推荐)

定义一个视图模型类,继承原Person或包含其属性,新增Temp字段,专门用于视图数据传递,既不污染原模型,又能享受强类型的编译检查和智能提示。

首先定义视图模型:

public class PersonViewModel : Person
{
    public string Temp { get; set; }
}

控制器代码:

var listofPersons = new List<PersonViewModel>();
for (int i = 0; i < 5; i++) 
{
    var per = new PersonViewModel();
    per.Temp = "example" + i;
    per.PersonId = i;
    per.Email = "555example@stack.co";
    // 其他Person属性按需赋值
    listofPersons.Add(per);
}
return View(listofPersons);

视图中使用强类型模型:

@model IEnumerable<PersonViewModel>
@foreach (var item in Model)
{
    <p>@item.PersonId - @item.Temp</p>
}

方案三:使用ExpandoObject动态添加属性

利用.NET的动态类型ExpandoObject,在运行时为对象添加temp字段,适合快速临时场景,但缺乏编译时类型检查。

控制器代码:

var listofPersons = new List<dynamic>();
for (int i = 0; i < 5; i++) 
{
    dynamic per = new ExpandoObject();
    per.temp = "example" + i;
    per.PersonId = i;
    per.Email = "555example@stack.co";
    // 其他Person属性按需赋值
    listofPersons.Add(per);
}
return View(listofPersons);

视图接收方式同方案一,使用动态类型即可。

内容的提问来源于stack exchange,提问作者wvinyl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:01:03