问题描述
我创建了一个名为 PostsRezervationviewmodel 的视图模型,我想在一个视图中传递来自两个模型的数据。下面是模型。它们几乎相同,因为当我单击名为“Rezervo”的操作链接时,我将“Postime”保存在另一个名为“UdhetimRezervuar”的模型上,并将 UserId 作为外键(userId 登录用户)。我想要做的是,在视图(UdhetimIRezervuar.cshtml)中,我通过 viewmodel 我想分别显示在表格 vendetELira 的单元格“vendet e Lira”中,仅针对该帖子。操作链接位于 Index.cshtml 中。我不知道你们中是否有人明白我想做什么,但如果你明白,请帮助我。我没有更多的想法如何做到这一点。谢谢!
这些是模型:
public class Postime
{
public int Id { get; set; }
[required]
public string Lokacioni { get; set; }
[required]
[display(Name ="Data e nisjes")]
public DateTime Datanisjes { get; set; }
[required]
public string vendtakimi { get; set; }
[required]
[display(Name ="vendet e lira")]
[Range(0,10)]
public byte vendetELira { get; set; }
public bool KamRezervuar { get; set; }
public byte NrRezervimeve { get; set; }
public virtual ApplicationUser User { get; set; }
public string UserId { get; set; }
}
public class UdhetimRezervuar
{
public int Id { get; set; }
public string Lokacioni { get; set; }
[display(Name = "Data e nisjes")]
public DateTime Datanisjes { get; set; }
public string vendtakimi { get; set; }
public bool KamRezervuar { get; set; }
public byte NrRezervimeve { get; set; }
public virtual ApplicationUser User { get; set; }
public string UserId { get; set; }
}
这是我通过 viewmodel 的视图:
@model Carpool.viewmodels.PostimRezervimviewmodel
@{
ViewBag.Title = "UdhetimIRezervuar";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Udhetimet e Rezervuara</h2>
<table class="table table-bordered">
<tr>
<th>Destinacioni</th>
<th>Data e nisjes</th>
<th>vendtakimi</th>
<th>vendet e lira</th>
<th>Numri i rezervimeve</th>
</tr>
@foreach (var m in Model.Rezervuar)
{
<tr>
<td>@m.Lokacioni</td>
<td>@m.Datanisjes</td>
<td>@m.vendtakimi</td>
<td></td>@* Here I want to display vendetELira number only for that post I click on actionlink*@
<td>@m.NrRezervimeve</td>
</tr>
}
</table>
这是我在 UdhetimRezervuarController.cs 中显示“Posttime”(抱歉有些词是我的国家语言)时的方法:
public ActionResult UdhetimIRezervuar()
{
var userId = User.Identity.GetUserId();
var udhetimet = _db.UdhetimRezervuars.Include(m => m.User).Where(m => m.UserId == userId).ToList();
var postime = _db.Postimes.ToList();
var postrezervuarviewmodel = new PostimRezervimviewmodel
{
Postime = postime,Rezervuar = udhetimet
};
return View(postrezervuarviewmodel);
}
public ActionResult Rezervo(int id,UdhetimRezervuar udhetimRezervuar)
{
Postime postime = _db.Postimes.Find(id);
var userId = User.Identity.GetUserId();
if (postime == null)
{
return HttpNotFound();
}
else
{
udhetimRezervuar.UserId = userId;
udhetimRezervuar.Id = postime.Id;
udhetimRezervuar.Lokacioni = postime.Lokacioni;
udhetimRezervuar.Datanisjes = postime.Datanisjes;
udhetimRezervuar.vendtakimi = postime.vendtakimi;
postime.vendetELira -= 1;
udhetimRezervuar.KamRezervuar = true;
postime.NrRezervimeve += 1;
udhetimRezervuar.NrRezervimeve += 1;
Session["vendetelira"] = postime.vendetELira;
_db.UdhetimRezervuars.Add(udhetimRezervuar);
_db.SaveChanges();
return RedirectToAction("UdhetimIRezervuar","UdhetimRezervuar");
}
最后这是显示所有“Posttime”的索引视图:
@model IEnumerable<Carpool.Models.Postime>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
<link rel="stylesheet" href="~/Content/postimet.css" />
}
<h2>Te gjitha postimet</h2>
<div class="sfondipostimet">
@foreach (var m in Model)
{
<div class="postimet">
<table class="table">
<tr>
<td><b>Destinacioni</b></td>
<td>@m.Lokacioni</td>
</tr>
<tr>
<td><b>Data e nisjes</b></td>
<td>@m.Datanisjes</td>
</tr>
<tr>
<td><b>vendtakimi</b></td>
<td>@m.vendtakimi</td>
</tr>
<tr>
<td><b>vendet e lira</b></td>
<td>@m.vendetELira</td>
</tr>
<tr>
<td>
@*<input type="button" value="Rezervo" class="button" id="button@(m.Id)" data-postimId='@m.Id' />*@
@Html.ActionLink("Rezervo","Rezervo","Postime",new { id = m.Id},new { @class="btn btn-info"})
</td>
</tr>
</table>
</div>
<br /><br />
}
</div>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)