asp.net MVC视图使用来自另一个表的变量过滤一个表

5hcedyr0  于 2023-02-06  发布在  .NET
关注(0)|答案(1)|浏览(149)

我有两个表,我试图拉信息,一个是工作表,我有我的工作存储的所有信息,另一个是保存的工作表,我希望有一个工作的ID与申请它的用户的ID相关。
我想通过使用保存在SavedJobs表中的ID过滤视图页中的表来显示用户已申请的Job列表。
下面是一个视图无法工作的示例,因为我不知道如何在单个视图中访问多个模型的数据。

@model IEnumerable<JobPortalApplication.Models.Job>

@{
    ViewBag.Title = "Index";
}

<h2>Applicants</h2>

<table class="table">
    <tr>
        <th>
            
            @Html.DisplayNameFor(model => model.Type)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Location)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Company)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Category)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Experience)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Salary)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Education)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Date)
        </th>
        
        <th></th>
    </tr>

@foreach (var item in Model) {
if(item.ID.Equals(JobPortal.Models.SavedJob.JobId){//this does not work because I can't access JobId
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Type)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Location)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Company)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Category)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Experience)
        </td>
        <td>
            $@Html.DisplayFor(modelItem => item.Salary)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Education)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Date)
        </td>
        <td>
            @Html.ActionLink("Details", "Details", new { id=item.ID }) 
        </td>
    </tr>
   }
}

</table>

我也尝试过一种方法,允许多个模型在一个单一的视图,像这样,但它似乎没有工作

//controller action
public ActionResult Details(int? id)
{
    
    var Job1 = GetJobs();
    var SavedJobs1 = GetSavedJobs();

    IndexVM model = new IndexVM();
    model.JobsList = Job1;
    model.SavedJobList = SavedJobs1;

    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    User user = _dbContext.Users.Find(id);
    if (user == null)
    {
        return HttpNotFound();
    }
    return View(model);

}

//view 

@foreach (var item1 in Model.JobsList)
{
    foreach (var item in Model.SavedJobList)
    {
        if (item.JobId.Equals(item1.ID))
        {
            <table class="table">
                <dt>
                    @item1.ID
                </dt>
                <dt>
                    @item1.Type
                </dt>
                <dt>
                    @item1.Location
                </dt>
                <dt>
                    @item1.Company
                </dt>
                <dt>
                    @item1.Experience
                </dt>
                <dt>
                    @item1.Salary
                </dt>
                <dt>
                    @item1.Education
                </dt>
                <dt>
                    @item1.Date
                </dt>
                <dt>
                    @item1.Category
                </dt>
            </table>

        }
    }
}

如果你能推荐一个更好的方法来保存作业给一个特定的用户,我也会很感激的。

gjmwrych

gjmwrych1#

我认为您应该在背面过滤这些数据,只在正面显示。
我猜您需要保存的作业列表中的作业列表
这可以使用以下LINQ表达式解决:

var newJobList = savedJobs.Where(p => jobs.Any(p2 => p2.ID == p.JobID));

相关问题