如何在视图中获取另一个模型的属性并在公共 foreach 或以其他方式使用它?

问题描述

我创建了一个名为 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 (将#修改为@)