c# - 如何将模型属性的更改值复制或获取到另一个模型?
问题描述
我正在使用 C# MVC 创建一个 Web 应用程序。Trip.cs
我创建了一个具有以下属性的模型:
public int ID {get; set;}
public string Destination {get; set;}
public DateTime DepartureDate {get; set;}
public string MeetPlace {get; set;}
public int NumberOfSeats {get; set;}
public virtual ApplicationUser User { get; set; }
public string UserId { get; set; }
我创建了另一个具有相同属性的模型,称为ReservedTrip.cs
相同。Trip.cs
我所做的是,当登录的用户单击Actionlink
名为“预订旅行”时,我将此“旅行”保存到 ,ReservedTrip.cs
并将属性数量减少为NumberOfSeats
1。换句话说,我将此“旅行”数据从 复制Trip.cs
到ReservedTrip.cs
。问题是当我在视图中显示模型中的数据时Trip.cs
,更改的数量NumberOfSeats
,但在模型ReservedTrip.cs
中属性NumberOfSeats
没有改变。所以我希望NumberOfSeats
模型 Trip.cs 的属性NumberOfSeats
更改以相同的值更改属性。
谁能帮我?
解决方案
从设计的角度来看,最好不要有任何表的副本。针对这种情况的一个好的设计可以是这样的。
public class Trip
{
public int ID {get; set;}
public string Destination {get; set;}
public DateTime DepartureDate {get; set;}
public string MeetPlace {get; set;}
public int NumberOfSeats {get; set;}
public int CreatedByUserID {get; set;}
public virtual ApplicationUser CreatedByUser {get; set;}
public virtual ICollection<TripReservation> Reservations {get;set;}
}
public class TripReservation
{
public int ID {get; set;}
public int TripID {get; set;}
public int UserID {get; set;}
public virtual Trip Trip {get; set;}
public virtual ApplicationUser User {get; set;}
}
然后在您的控制器中,您可以构建一个视图模型,其中可用的座位数为
numberOfSeatsAvailable = trip.NumberOfSeats - trip.Reservations.Count();
如果预订可以预订超过 1 个座位,您可以从该行程的所有预订中求和。
示例:视图模型
public class TripReservationsViewModel
{
public Trip Trip { get; set; }
public int NumberOfSeatsAvailable { get; set; }
}
示例:控制器
public ActionResult TripDetails(int id)
{
var trip = db.Trips.FirstOrDefault(trip => trip.ID == id);
if (trip == null)
{
// Trip does not exist,
// Redirect the user to the trips home page
//
return RedirectToAction("Index");
}
var viewModel = new TripReservationsViewModel();
viewModel.Trip = trip;
viewModel.NumberOfSeatsAvailable = trip.NumberOfSeats - trip.Reservations.Count();
return View(viewModel);
}
示例:查看
@model TripReservationsViewModel
<h1>Trip Details</h1>
<p>Seats available: @Model.NumberOfSeatsAvailable</p>
etc...
推荐阅读
- typescript - 打字稿:接口字段上的元
- neo4j - 如何在 NEO4J 密码中进行“或”搜索
- c# - 静态 HttpClient 和 CookieContainer
- c - 如何在c中将指针分配给数组[]?
- c# - cefsharp 子进程退出或崩溃时的事件或通知
- c# - 通过MvvmCross的IoC给类的构造函数传参
- ssl - TLS 超时仅适用于 HTTP/2 时缺少 shutdown() 回溯
- dart - Future 在 Flutter 中结合 FutureBuilder 返回 null
- json - 创建单个 IAM 用户以仅访问特定的 S3 存储桶
- php - 为每个语句设置无序列表的样式