Я работаю над ASP. NET Core MVC проектом. В одном из моего класса контроллера в его методе Details
я написал такой код:
public async Task<IActionResult> Details(int? id)
{
IQueryable query = Enumerable.Empty<Applicant().AsQueryable();
if (id == null)
{
return NotFound();
}
var applicant = await _context.Applicant
.Include(a => a.ApplicantTypeNavigation)
.FirstOrDefaultAsync(m => m.ApplicantId == id);
if (applicant.ApplicantType == 1)
{
query = from t1 in _context.Applicant // List<TABLE_1>
join t2 in _context.PersonApplicant
on new { t1.ApplicantId, t1.ApplicantType } equals new { t2.ApplicantId, t2.ApplicantType }
select new ApplicantViewModel { applicantvm = t1, personapplicantvm = t2 };
}
else if (applicant.ApplicantType == 2)
{
query = from t1 in _context.Applicant // List<TABLE_1>
join t2 in _context.LegalApplicant
on new { t1.ApplicantId, t1.ApplicantType } equals new { t2.ApplicantId, t2.ApplicantType }
select new ApplicantViewModel { applicantvm = t1, legalapplicantvm = t2 };
}
return View(query);
}
В моем коде я должен отправить запрос IQueryable
в качестве модели в представление Details
чтобы показать его содержание. Однако, поскольку запрос имеет тип IQueryable
, а не тип модели, представление ничего не показывает.
Ниже приведена моя разметка и код в Details
представлении:
@model CSDDashboard.Models.ApplicantViewModel
@{
ViewData["Title"] = "Details";
}
<h1>Details</h1>
<div>
<h4>Applicant </h4>
<hr />
<dl class="row">
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.applicantvm.ApplicantType)
</dt>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.applicantvm.Name)
</dt>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.applicantvm.Address)
</dt>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.applicantvm.Description)
</dt>
<dt class="col-sm-2">
</dt>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.legalapplicantvm.NationalCode)
</dt>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.legalapplicantvm.RegisterNo)
</dt>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.legalapplicantvm.EconomicCode)
</dt>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.personapplicantvm.NationalCode)
</dt>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.personapplicantvm.Username)
</dt>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.personapplicantvm.IssuePlace)
</dt>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.personapplicantvm.BirthCertificateNo)
</dt>
</dl>
</div>
<div>
<a asp-action="Edit" asp-route- id="@Model.applicantvm.ApplicantId">Edit</a> |
Вернуться к списку
namespace CSDDashboard.Models
{
public class ApplicantViewModel
{
public Applicant applicantvm { get; set; }
public PersonApplicant personapplicantvm { get; set; }
public LegalApplicant legalapplicantvm { get; set; }
}
}
Мне кажется, проблема в том, что я отправляю IQueryable
введите в представление вместо типа модели. Но я не знаю, как это преобразовать.
Буду признателен, если кто-нибудь предложит мне какое-либо решение.