我有 2 個問題,第一個是我試圖避免重復值并在列中顯示 SELECT DISTINCT 名稱,如圖所示,有 2 行名稱為 Rob,我只想顯示 1,因為兩行都有一樣的名字。
我的另一個問題是我正在嘗試使用單擊的選定名稱中的列資訊填充文本框
索引.cshtml
@page
@model IndexModel
@{ ViewData["Title"] = "Index"; }
<form method="post">
<table>
<tr>
<td>
@Html.TextBox("TxtDepartment")
</td>
<td>
<button type="button" id="DepartmentSearch">Search</button>
</td>
</tr>
</table>
</form>
<br />
<table>
<tr>
<td><div id="DepartmentResult"></div></td>
<td><div id="EmployeeResult"></div></td>
</tr>
</table>
<form method="post">
<label>Department Name:</label>
<input type="text" id="DeptName" />
<label>Photo File Name:</label>
<input type="text" id="NameResult" />
</form>
@section Scripts {
<script>
$("#DepartmentSearch").click(function()
{
$.ajax(
{
url: "/Index?handler=DisplayDepartment",
type: "POST",
data: { value: $("#TxtDepartment").val() },
headers: { RequestVerificationToken: $('input:hidden[name="__RequestVerificationToken"]').val() },
success: function(data) { $("#DepartmentResult").html(data); }
});
});
</script>
}
索引.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using PracticeApp.Models;
using System.Linq;
namespace PracticeApp.Pages
{
public class IndexModel : PageModel
{
public CompanyContext _context;
public IndexModel(CompanyContext context) { _context = context; }
public PartialViewResult OnGetDisplayDepartment(int value)
{
return Partial("_DisplayDepartmentPartial", _context.Departments.Where(x => x.DepartmentId == value).ToList());
}
public PartialViewResult OnGetDisplayEmployee(string value)
{
return Partial("_DisplayEmployeePartial", _context.Employees.Where(x => x.DepartmentName == value).ToList());
}
public PartialViewResult OnGetDisplayInfo(string value)
{
return Partial("_DisplayEmployeePartial", _context.Employees.Where(x => x.EmployeeName == value).ToString());
}
}
}
_DisplayDepartmentPartial.cshtml
@model IEnumerable<Models.Department>
@if (Model.Count() != 0)
{
<table style="border: 1px solid black">
<thead>
<tr>
<th colspan="2" style="border: 1px solid black; text-align: center;">Department Results</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center" style="border: 1px solid black; font-weight: bold;">
@Html.DisplayNameFor(m => m.DepartmentName)
</td>
</tr>
@foreach (Models.Department item in Model)
{
<tr>
<td id="TxtEmployee" align="center" style="border: 1px solid black;">
<a id="EmployeeSearch" href="javascript:aa()">@item.DepartmentName</a>
</td>
</tr>
}
</tbody>
</table>
}
else
{
<p>No data</p>
}
<script>
$("#EmployeeSearch").click(function()
{
$.ajax(
{
url: "Index?handler=DisplayEmployee",
type: "POST",
data: { value: $("#EmployeeSearch").text() },
headers: { RequestVerificationToken: $('input:hidden[name="__RequestVerificationToken"]').val() },
success: function(data) { $("#EmployeeResult").html(data); }
});
});
</script>
_DisplayEmployeePartial.cshtml
@model IEnumerable<Models.Employee>
@if (Model.Count() != 0)
{
<table style="border: 1px solid black">
<thead>
<tr>
<th colspan="2" style="border: 1px solid black; text-align: center;">Employee Results</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center" style="border: 1px solid black; font-weight: bold;">
@Html.DisplayNameFor(m => m.EmployeeName)
</td>
</tr>
@foreach (Models.Employee item in Model)
{
<tr>
<td align="center" style="border: 1px solid black;">
<a id="PopulateNameData" href="javascript:aa()">@item.EmployeeName</a>
</td>
</tr>
}
</tbody>
</table>
}
else
{
<p>No data</p>
}
<script>
$("#PopulateNameData").click(function()
{
$.ajax(
{
url: "Index?handler=DisplayEmployee",
type: "POST",
data: { value: $("#PopulateNameData").text() },
headers: { RequestVerificationToken: $('input:hidden[name="__RequestVerificationToken"]').val() },
success: function(data) { $("#NameResult").html(data); }
});
});
</script>
員工模型
using System;
using System.ComponentModel.DataAnnotations;
namespace PracticeApp.Models
{
public partial class Employee
{
[Display(Name = "Employee ID")] public int EmployeeId { get; set; }
[Display(Name = "Department ID")] public int DepartmentId { get; set; }
[Display(Name = "Name")] public string EmployeeName { get; set; } = null!;
public string DepartmentName { get; set; } = null!;
public DateTime DateofJoining { get; set; }
public string PhotoFileName { get; set; }
}
}
uj5u.com熱心網友回復:
修改您的 linq,如下所示:
public PartialViewResult OnGetDisplayEmployee(string value)
{
return Partial("_DisplayEmployeePartial", _context.Employees.Where(x => x.DepartmentName == value).GroupBy(x=>x.EmployeeName).Select(x => x.First()).ToList());
}
uj5u.com熱心網友回復:
你有沒有嘗試過這樣的事情?
_context.Employees
.Where(x => x.DepartmentName == value)
.Distinct()
.ToList());
或者您可以嘗試指定欄位:
_context.Employees
.Where(x => x.DepartmentName == value)
.Select(x => new {
EmployeeId = x.EmployeeId,
EmployeeName = x.EmployeeName
})
.Distinct()
.ToList());
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/527954.html
標籤:C#asp.net 核心实体框架核心.net-6.0剃刀页面
上一篇:如何上傳串列中的單個檔案
下一篇:我在BlazorServerApp中的AzureADB2C的refresh_token是空的,而我的id_token是提供的