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

如何用ViewModel替代ViewBag并创建它计算banhotosaid+transpote Id值返回视图

用ViewModel替代ViewBag并计算ID总和的实现方案

没问题,我来一步步帮你搞定这个需求——用ViewModel替代ViewBag,同时实现两个ID的求和逻辑并返回给视图。

1. 创建你的ViewModel类

首先咱们得定义一个ViewModel,它要包含需要展示的两个ID字段,以及计算总和的属性。这个类建议放在项目的ViewModels文件夹下(没有的话直接新建一个就行):

namespace YourProjectName.ViewModels
{
    public class IdSumViewModel
    {
        // 对应banhotosaid的属性,遵循C#命名规范用PascalCase
        public int BanhoTosaId { get; set; }
        // 对应transpote Id的属性
        public int TranspoteId { get; set; }

        // 只读属性,自动计算两个ID的总和,无需额外方法
        public int TotalSum => BanhoTosaId + TranspoteId;
    }
}

这里用表达式体属性实现TotalSum,访问时会自动计算总和,简洁又高效,还把计算逻辑封装在了ViewModel里,符合关注点分离的原则。

2. 在控制器中替换ViewBag,使用ViewModel

接下来把控制器里原来用ViewBag传值的逻辑,改成实例化ViewModel并赋值,再传给视图:

using YourProjectName.ViewModels;
using Microsoft.AspNetCore.Mvc;

public class YourController : Controller
{
    public IActionResult CalculateSum()
    {
        // 这里模拟从数据库/业务逻辑层获取两个ID的实际值
        int banhoTosaId = 15;
        int transpoteId = 7;

        // 实例化ViewModel并给字段赋值
        var viewModel = new IdSumViewModel
        {
            BanhoTosaId = banhoTosaId,
            TranspoteId = transpoteId
        };

        // 把ViewModel传给视图,彻底替代ViewBag
        return View(viewModel);
    }
}

对比ViewBag,ViewModel是强类型的——编译时就能检查出属性名拼写错误,不会出现运行时才暴露的低级问题,后续维护起来也更省心。

3. 在视图中使用ViewModel展示数据

最后在对应的Razor视图里,先指定ViewModel的类型,然后直接访问它的属性即可:

@model YourProjectName.ViewModels.IdSumViewModel

<div class="container mt-4">
    <h2>ID总和计算结果</h2>
    <div class="row mt-3">
        <div class="col-md-6">
            <p>BanhoTosa ID: <strong>@Model.BanhoTosaId</strong></p>
            <p>Transpote ID: <strong>@Model.TranspoteId</strong></p>
        </div>
        <div class="col-md-6">
            <h4 class="text-success">总和: @Model.TotalSum</h4>
        </div>
    </div>
</div>

视图只负责展示数据,计算逻辑完全放在ViewModel里,这样代码结构更清晰,也符合MVC的设计思想。

为什么用ViewModel比ViewBag好?

  • 类型安全:编译时就能发现属性名错误,避免运行时异常
  • 可读性更强:其他开发者看代码时,一眼就能知道视图需要哪些数据
  • 可维护性更高:如果要修改字段或计算逻辑,只需要改动ViewModel,不用在多个地方找ViewBag的引用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:09:04