首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ASP.NET Core表一直显示相同的数字

ASP.NET Core表一直显示相同的数字
EN

Stack Overflow用户
提问于 2021-11-24 12:43:20
回答 2查看 132关注 0票数 1

我完全不知所措。一切似乎都是正确的。当我查看数据库时,正确的编号被提交了。但是,当我从数据库中列出数据时,数据库列表中的Amount列总是相同的数字。

当您转到“存款”选项卡时,您输入的第一个数字总是要显示的数字。因此,如果我输入$50,$50将出现在transaction选项卡中。不过,如果我回去放60块钱的话。在事务历史选项卡中,它仍然会说$50,但在数据库中,则是$60。为什么它不显示数据库中的数字?

账户主计长:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using The_Bank_of_Cardinal.Areas.Identity.Data;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using The_Bank_of_Cardinal.Models;

namespace The_Bank_of_Cardinal.Controllers
{
    [Authorize]
    public class AccountController : Controller
    {
        private readonly TransactionConnection _tc;
        private readonly UserManager<CardinalUser> userManager;
        private readonly SignInManager<CardinalUser> signInManager;
        private readonly DepositConnection _dc;

        public AccountController(TransactionConnection tc, UserManager<CardinalUser> userManager, SignInManager<CardinalUser> signInManager, DepositConnection dc)
        {
            _tc = tc;
            this.userManager = userManager;
            this.signInManager = signInManager;
            _dc = dc;
        }

        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Transactions()
        {
            var results = _tc.TransactionHistory.ToList();
            return View(results);
        }

        public IActionResult Test() 
        {
            return View();
        }

        [HttpGet]
        public IActionResult Deposit(string Id)
        {
            var resultss = _dc.AspNetUsers.Where(s => s.Id == Id).FirstOrDefault();
            return View(resultss);
        }

        [HttpPost]
        public IActionResult Deposit(DepositModel model, TransactionModel tm)
        {
            var resultss = _dc.AspNetUsers.Where(s => s.Id == model.Id).FirstOrDefault();
            int test = model.AccountBalance + userManager.GetUserAsync(User).Result.AccountBalance;

            tm.UserName = userManager.GetUserAsync(User).Result.UserName;
            string name = tm.UserName;
            tm.Description = "personal deposit";
            tm.TransactionType = "Deposit";
            tm.Amount = "$" + model.AccountBalance.ToString();

            model.AccountBalance = test;

            _tc.TransactionHistory.Add(tm);
            _tc.SaveChanges();

            _dc.AspNetUsers.Remove(resultss);
            _dc.AspNetUsers.Add(model);
            _dc.SaveChanges();

            //_dc.AspNetUsers.

            return Content("This is your info \n" + 
                $"Name: {name} \n" + 
                $"Description: {tm.Description} \n" + 
                $"type: {tm.TransactionType} \n" + 
                $"Amount {tm.Amount} \n");
        }

        public IActionResult Transfers()
        {
            return View();
        }
    }
}

交易视图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@model IEnumerable<The_Bank_of_Cardinal.Models.TransactionModel>

@{
    ViewData["Title"] = "Transactions";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>Transactions</h1>

<p>
    <a asp-action="Create">Create New</a>
</p>
@*<table class="table">
    <thead>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.UserName)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Description)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.TransactionType)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Amount)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Date)
            </th>
            <th></th>
        </tr>
    </thead>
    <tbody>
@foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.UserName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Description)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.TransactionType)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Amount)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Date)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
                @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
                @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
            </td>
        </tr>
}
    </tbody>
</table>*@

<div class="container">
    @if (Model != null)
    {
        <table class="table table-dark">
            <thead>
                <tr>
                    <th scope="col">Name</th>
                    <th scope="col">Description</th>
                    <th scope="col">Transaction Type</th>
                    <th scope="col">Amount</th>
                    <th scope="col">Date</th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model)
                {
                <tr>
                    <td>@Html.DisplayFor(modelItem => item.UserName)</td>
                    <td>@Html.DisplayFor(modelItem => item.Description)</td>
                    <td>@Html.DisplayFor(modelItem => item.TransactionType)</td>
                    <td>@Html.DisplayFor(modelItem => item.Amount)</td>
                    <td>@Html.DisplayFor(modelItem => item.Date)</td>
                </tr>
                }
            </tbody>
        </table>
    }
</div>

存款视图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@model The_Bank_of_Cardinal.Models.DepositModel

@{
    ViewData["Title"] = "Deposit";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>Deposit</h1>

<h4>DepositModel</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Deposit">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label hidden asp-for="Id" class="control-label"></label>
                <input hidden asp-for="Id" class="form-control" />
                <span asp-validation-for="Id" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="AccountBalance" class="control-label">Amount</label>
                <input asp-for="AccountBalance" class="form-control" value="0" />
                <span asp-validation-for="AccountBalance" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Deposit" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

存款模式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using Microsoft.AspNetCore.Identity;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using The_Bank_of_Cardinal.Areas.Identity.Data;

namespace The_Bank_of_Cardinal.Models
{
    public class DepositModel
    {
        [Key]
        public string Id { get; set; }
        public int AccountBalance { get; set; }
    }
}

交易模式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace The_Bank_of_Cardinal.Models
{
    public class TransactionModel
    {
        [Key]
        public string UserName { get; set; }
        public string Description { get; set; }
        public string TransactionType { get; set; }
        public string Amount { get; set; }
        public DateTime Date { get; set; }
    }
}

矿床DbContext

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace The_Bank_of_Cardinal.Models
{
    public class DepositConnection : DbContext
    {
        public DepositConnection(DbContextOptions<DepositConnection> options) : base(options)
        {
        }

        public DbSet<DepositModel> AspNetUsers { get; set; }
    }
}

事务DbContext

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace The_Bank_of_Cardinal.Models
{
    public class TransactionConnection : DbContext
    {
        public TransactionConnection(DbContextOptions<TransactionConnection> options) : base(options)
        {
        }

        public DbSet<TransactionModel> TransactionHistory { get; set; }
    }
}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-24 13:26:50

TransactionModel的主键为属性UserName。但是有几个TransactionModel实例具有相同的UserName值。这是矛盾的。每个TransactionModel主键必须是唯一的。

TransactionModel类更改为如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TransactionModel
{
    public int Id { get; set; } // This is the primary key.
    public string UserName { get; set; }
    public string Description { get; set; }
    public string TransactionType { get; set; }
    public decimal Amount { get; set; }
    public DateTime Date { get; set; }
}

属性Id是您的主键。它将自动递增。这是惯例。请参阅:https://learn.microsoft.com/en-us/ef/core/modeling/keys?tabs=data-annotations#configuring-a-primary-key

https://learn.microsoft.com/en-us/ef/core/modeling/generated-properties?tabs=data-annotations#primary-keys

附带注意:属性Amount的类型应该是十进制而不是字符串,因此在上面的示例中对此进行了更改。本着同样的精神,枚举可能是TransactionType属性的更好选择。

当然,您需要使用类TransactionModel修改代码,以便考虑到它的新定义。

票数 3
EN

Stack Overflow用户

发布于 2021-11-24 13:13:38

要使用helpers从您的incorrectly.

  • When中的集合进行HTML <form>输入绑定,您需要使用for(),而不是foreach(),并且您需要在For() expression.

  • When中使用[int index]索引器,您需要绑定表单对象/表单模型并将额外的数据传递给您的视图,对单向数据使用ViewData,对双向数据使用Model
  • 我认为ASP.NET MVC和ASP.NET Core的视图模型和表单绑定系统需要重新考虑,因为要求ViewModel对象也是绑定表单模型是完全错误的。在我自己的项目中,我在ASP.NET核心上有了自己的扩展,允许我使用单独的类型/对象ASP.NET

  • 我无法通过

修复您的ActionLink项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <tbody>
@for( int i = 0; i < this.Model.Count; i++ ) {
    
        <tr>
            <td>
                @Html.DisplayFor( m => m[i].UserName )
            </td>
            <td>
                @Html.DisplayFor( m => m[i].Description )
            </td>
            <td>
                @Html.DisplayFor( m => m[i].TransactionType )
            </td>
            <td>
                @Html.DisplayFor( m => m[i].Amount )
            </td>
            <td>
                @Html.DisplayFor( m => m[i].Date )
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
                @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
                @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
            </td>
        </tr>
}
    </tbody>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70102680

复制
相关文章
在wp评论框下面添加表情符号
作者:matrix 被围观: 3,712 次 发布时间:2011-09-24 分类:兼容并蓄 | 无评论 »
HHTjim 部落格
2022/09/26
5720
Android AppBar
AppBar官方文档摘记 2016-6-12 本文摘自Android官方文档,为方便自己及其他开发者朋友阅读。 章节目录为“Develop > Training > Best Practices f
用户1172465
2018/01/08
9750
Android AppBar
在TextView前面(或后面)添加文本(或者图片)标签
大家都知道,前几年在TextView文本前添加自定义标签文本或标签图片还是比较火的,特别是一些电商项目。不过这几年,UI设计基本很少见到这种设计了,不过还是有些时候,还是会遇到一些在文本前加标签需求。如果使用TextView自带的drawableLeft属性,虽然可以满足一些常规需求,但是可定制化太低,而且文本换行时图片和文本会分离,达不到想要的效果。当然,我这里也只是提供了一种方法,实现一个需求是有千千万万种方法的!
前端小tips
2021/11/30
2.7K0
在TextView前面(或后面)添加文本(或者图片)标签
图形添加文本-ggfittext
今天是大年初三,想必小伙伴们都放假在家陪着爸爸妈妈,吃着家乡的饭,和家人一起过节,小编在这里给大家拜个年~祝大家新年新气象,新年好运气有福气,工作顺利,身体健康~
作图丫
2022/03/29
6240
图形添加文本-ggfittext
sed命令在文本每行,行尾或行首添加字符
用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.file
章工运维
2023/05/19
3.9K0
sed命令在文本每行,行尾或行首添加字符
Flutter AppBar入门使用
实现效果图 [1240] 主要代码 class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( leading: new Icon(Icons.arrow_back_ios), title: new Text(widget.title),
易寒
2022/01/15
5600
Linux 学习_在Linux下面安装tomcat
下载地址:http://tomcat.apache.org/download-60.cgi
Hongten
2018/09/13
2.3K0
Linux 学习_在Linux下面安装tomcat
Flutter AppBar 去掉底部阴影
屏幕快照 2019-09-19 14.26.39.png elevation: 0 加上这个属性就可以去掉底部的阴影 @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('我的'), backgroundColor: Colors.deepOrange, elevation: 0, //去
赵哥窟
2019/09/20
3.3K0
Flutter AppBar 去掉底部阴影
[flutter专题]6详解AppBar小部件
应用栏是各种应用程序中最常用的组件之一。它可用于容纳搜索字段、以及在页面之间导航的按钮,或者只是页面标题。由于它是一个如此常用的组件,因此 Flutter 为该功能提供了一个名为AppBar的专用小部件。
徐建国
2021/11/30
16.5K0
[flutter专题]6详解AppBar小部件
Flutter中AppBar组件详解
AppBar组件主要用于定义应用程序顶部区域,可以用来展示应用程序标题、搜索入口、下拉菜单、标签栏等信息。常用的属性如下所示:
越陌度阡
2020/12/29
1.1K0
在MFC下面实际演示CCriticalSection 的使用
A:CCriticalSection是一种线程同步策略 或者说技术 或者方法 总之呢就是这么个意思。。。。
全栈程序员站长
2022/09/06
6120
在MFC下面实际演示CCriticalSection 的使用
Flutter基础widgets教程-AppBar篇
1 AppBar 一个典型的AppBar,带有标题、操作和溢出的下拉菜单。 2 构造函数 AppBar({ Key key, this.leading, this.automaticallyImplyLeading = true, this.title, this.actions, this.flexibleSpace, this.bottom, this.backgroundColor, this.brightness, th
青年码农
2020/10/10
6470
Flutter基础widgets教程-AppBar篇
flutter组件6【AppBar的使用】
1.图示 2.解释 AppBar 有以下常用属性: leading → Widget - 在标题前面显示的一个控件,在首页通常显示应用的 logo;在其他界面通常显示为返回按钮。 title → Wi
sinnoo
2020/11/13
1.2K0
flutter组件6【AppBar的使用】
如何向图形添加曲形文本
R语言数据分析指南
2023/08/18
2310
如何向图形添加曲形文本
truncate语法在大buffer pool下面的优化
MySQL5.7版本仍然是线上普及程度最广泛的版本,在实际的操作过程中,经常会出现truncate table引起的系统TPS、QPS不稳定的现象。
AsiaYe
2020/09/21
9280
如何在图片上添加文本信息
给图片添加文本信息是非常常见的需求,通常需要添加的文本信息分为中文文字或者是非中文的文字,比如数字和英文,对这两类的实现方法也有所不同,非中文的文本信息可以直接用 opencv 实现,而中文文本需要使用 PIL ,因为 opencv 不支持中文。
kbsc13
2020/06/03
1.9K0
如何在图片上添加文本信息
(数据科学学习手札128)在matplotlib中添加富文本的最佳方式
  长久以来,在使用matplotlib进行绘图时,一直都没有比较方便的办法像R中的ggtext那样,向图像中插入整段的混合风格富文本内容,譬如下面的例子:
Feffery
2021/09/28
1.5K0
R语言ggplot2画热图的时候在色块上添加文本
今天的推文没有详细介绍代码,代码的介绍会以视频形式放到B站,欢迎大家关注我的B站 小明的数据分析笔记本 https://space.bilibili.com/355787260 image.png 首先是示例数据的格式 画热图的数据 image.png 用来添加文本的数据 image.png 如果还有其他文本需要添加,可以再准备一份数据 image.png 加载需要用到的R包 library(ggplot2) library(tidyverse) #install.packages("s
用户7010445
2021/10/13
1.9K0
layui弹出层中添加文本框
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132366.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/29
1.8K0
layui弹出层中添加文本框
点击加载更多

相似问题

在Appbar下面设置Recyclerview

28

键盘下面的AppBar

12

堆栈在AppBar下面而不是后面

23

在另一个AppBar下面的Material粘性AppBar

35

BottomSheet下面带有appbar_scrolling_behaviour的appbar

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文