У меня проблема с моим кодом. Проблема в том, что я не получаю данные постов по параметрам, используя ajax.
Кто-нибудь может это исправить? Код показан ниже.
Это код Javascript Ajax, куда я отправляю данные по почте методом в контроллер:
$('#pending').click(function () {
SaveTestResult("/Reception/PatientTests/SavePendingTest");
});
function SaveTestResult(url) {
var pid = $('.patientId').attr('id');
var tid = "";
var tval = "";
var tpid = "";
var tests = [];
$("table > tbody > tr").each(function () {
testId = $(this).find('.tid').val();
if(typeof(testId) != "undefined")
{
tid = testId;
}
var rowText = ""
$(this).find('td').each(function () {
tpid = $(this).find('.tpId').val();
tval = $(this).find('.result').val();
if (typeof (tpid) != "undefined") {
tests.push({ PatientId: pid, TestId: tid, TestParameterId: tpid, TestValue: tval });
}
});
});
// alert(JSON.stringify(tests));
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(tests),
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
success: function (data) {
alert(data);
},
error: function (e) {
alert('Error' + JSON.stringify(e));
}
});
}
Это контроллер:
[HttpPost]
public async Task<IActionResult> SavePendingTest(List<PendingTestResult> pendingTestResult)
{
if (ModelState.IsValid)
{
foreach (PendingTestResult ptr in pendingTestResult)
{
_db.Add(ptr);
await _db.SaveChangesAsync();
}
return RedirectToAction(nameof(Index));
}
return View();
}
А это класс модели:
public class PendingTestResult
{
[Key]
public int Id { get; set; }
[Display(Name = "Patient Id")]
public int PatientId { get; set; }
[Display(Name = "Test Id")]
public int TestId { get; set; }
[Display(Name = "Test Parameter")]
public int TestParameterId { get; set; }
public string TestValue { get; set; }
[Display(Name = "Test")]
[ForeignKey("TestId")]
//relation of Tests table
public virtual Tests Tests { get; set; }
[Display(Name = "Patient")]
[ForeignKey("PatientId")]
//relation of Patient table
public virtual Patient Patient { get; set; }
[Display(Name = "Test Parameter")]
[ForeignKey("TestId")]
//relation of Patient table
public virtual TestParameter TestParameter { get; set; }
}
Это вид
@model DeltaSoftLIS.Models.Patient_Tests_TestParameter
@{
ViewData["Title"] = "Test Result";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="container-fluid">
<div class="row">
<div class="col-md-3">
<div class="card">
<partial name="_SidebarMenuPartialReception" />
</div>
</div>
<div class="col-md-9 animated bounce">
<div class="card" style="padding:20px 50px;">
<div class="row">
<div class="col-md-6">
<h2 class="text-info">Test Result</h2>
</div>
</div>
<br />
<div class="row blue-gradient mb-4">
<div class="col-md-3">
<form asp-action="TestResult" method="post" class="form-inline">
<div class="form-group">
<label class="text-white">Visit Number </label>
<input type="text" class="form-control" id="visitNo" asp-for="patient.VisitNo" />
<input type="submit" value="Submit" class="btn blue-gradient" />
</div>
</form>
</div>
</div>
@if (ViewBag.error != null)
{
<div class="alert alert-danger">@ViewBag.error</div>
}
else
{
<div class="container">
<div class="row">
@if (Model != null)
{
<div class="col-md-2">
Visit No: <span id="patinet.visitNo">@Model.patient.VisitNo</span>
</div>
<div class="col-md-4">
Patient Name: <span style="text-transform:capitalize" class="patientId" id="@Model.patient.Id">@Model.patient.FirstName @Model.patient.MiddleName @Model.patient.LastName</span>
</div>
}
</div>
</div>
@if (ViewBag.test != null)
{
<div class="container p-4">
<form>
<table class="table table-bordered table-sm" style="height:auto">
<tr class="blue-gradient-rgba text-white">
<th>Test Name</th>
<th>Value</th>
<th>Unit</th>
<th>Normal</th>
<th>Minimum</th>
<th>Maximum</th>
</tr>
@{string testgroup = "";
}
@foreach (var data in ViewBag.test)
{
<tr>
@if (testgroup != data.Tests.TestName)
{
<input type="hidden" class="tid" value="@data.Tests.Id" />
<th colspan="2">@data.Tests.TestName</th>
}
@{testgroup = data.Tests.TestName;
}
</tr>
@foreach (var tp in ViewBag.testPara)
{
if (data.Tests.Id == tp.TestId)
{
<tr>
<td>@tp.ParameterName</td>
<td><input type="hidden" class="tpId" value="@tp.Id"><input type="text" class="result"></td>
<td>@tp.Unit</td>
<td>@tp.NormalRange</td>
<td>@tp.Minimum</td>
<td>@tp.Maximum</td>
</tr>
}
}
}
</table>
</form>
</div>
}
}
<div class="row">
<div class="col-md-12 text-right">
@*@Html.ActionLink("Print Receipt", "printReceipt", new { id = Model.Id },new { taget = "_blank" }) |*@
<a asp-action="Index">Back to List</a> |
<input type="button" value="Pending" id="pending" class="btn sunny-morning-gradient text-white" />
<input type="button" value="Complete" id="complete" class="btn blue-gradient" />
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function () {
$('.result').keyup(function () {
var value = $(this).val();
var min = parseFloat($(this).closest('tr').find("td:eq(4)").text());
var max = parseFloat($(this).closest('tr').find("td:eq(5)").text());
if (value < min) {
$('.result').css({ 'color': 'blue' })
}
else if (value > max) {
$('.result').css({ 'color': 'red' })
}
else {
$('.result').css({ 'color': 'green' })
}
});
$('#pending').click(function () {
SaveTestResult("/Reception/PatientTests/SavePendingTest");
});
function SaveTestResult(url) {
var pid = $('.patientId').attr('id');
var tid = "";
var tval = "";
var tpid = "";
var tests = [];
$("table > tbody > tr").each(function () {
testId = $(this).find('.tid').val();
if(typeof(testId) != "undefined")
{
tid = testId;
}
var rowText = ""
$(this).find('td').each(function () {
tpid = $(this).find('.tpId').val();
tval = $(this).find('.result').val();
if (typeof (tpid) != "undefined") {
tests.push({ PatientId: pid, TestId: tid, TestParameterId: tpid, TestValue: tval });
}
});
});
//alert(JSON.stringify(tests));
$.ajax({
type: "POST",
url: url,
data: JSON.stringify(tests),
contentType: "application/json",
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
success: function (data) {
alert(data);
},
error: function (e) {
alert('Error' + JSON.stringify(e));
}
});
}
});
</script>
Пожалуйста, помогите мне решить эту проблему и сохраните список в базе данных
Ошибка в журнале консоли: Ошибка {"readyState": 4, "responseText" : "System.InvalidOperationException: представление 'SavePendingTest' не найдено. Были найдены следующие местоположения: \ r \ n / Области / Прием / Представления / PatientTests / SavePendingTest.cshtml \ r \ n / Области / Прием / Представления / Общий / / SavePendingTest.cshtml \ r \ n / Views / Shared / SavePendingTest.cshtml \ r \ n / Pages / Shared / SavePendingTest.cshtml \ r \ n в Microsoft.AspNetCore. Mvc .ViewEngines.ViewEngineResult.EnsureSuccessful (IEnumerable) ) \ r \ n в Microsoft.AspNetCore. Mvc .ViewFeatures.ViewResultExecutor.ExecuteAsyn c (контекст ActionContext, результат ViewResult) \ r \ n в Microsoft.AspNetCore. Mvc .ViewResult.ExecuteResultAsyn c (ActionContext context) \ r \ n в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.g__Awaited | 29_0 [TFilter, TFilterAsync] (ResourceInvoker invoker, Task lastTask, следующее состояние, область действия Scope, Object st ate, Boolean isCompleted) \ r \ n в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.Rethrow (контекст ResultExecutedContextSealed) \ r \ n в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.ResultilterF (State & next, Scope & scope, Object & state, Boolean & isCompleted) \ r \ n в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.InvokeResultFilters () \ r \ n --- Конец трассировки стека из предыдущего расположения, где было исключение брошено --- \ r \ n в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.g__Awaited | 24_0 (ResourceInvoker invoker, Task lastTask, следующее состояние, область действия области, состояние объекта, логическое состояние isCompleted) \ r \ n в Microsoft. AspNetCore. Mvc .Infrastructure.ResourceInvoker.Rethrow (ResourceExecutedContextSealed context) \ r \ n в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.Next (состояние & следующее, область действия и область действия, объект и состояние, логическое значение и \ nCompleted) в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.InvokeFilterPipelineAsyn c () \ r \ n --- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- \ r \ n в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.g__Logged | 17_1 (ResourceInvoker invoker) \ r \ n в Microsoft.AspNetCore. Routing.EndpointMiddleware.g__AwaitRequestTask | 6_0 (конечная точка конечной точки, запрос задачи, регистратор ILogger) \ r \ n в Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke (контекст HttpContext) \ r \ n для аутентификации Microsoft.AspNet. Контекст HttpContext. AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke (HttpContext httpContext) \ r \ n в Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke (контекст HttpContext) \ r \ n \ r \ r \ n \ rHH \ г \ nAccept: / \ r \ nAccept-Encoding: gzip, deflate, br \ r \ nAccept-Language: en-US, en; q = 0,9 \ r \ nСоединение: закрыть \ r \ nСодержание-длина: 351 \ r \ nContent-Type: application / json \ r \ nCook ie: .AspNetCore.Antiforgery. N4je5mEcjHk = CfDJ8AIMWfGHX55FkS_e4YdMcbzY3x_6D6NUruknobs5IXFtvGUf98iczXoLcdV3uv0upJtPUqZsVfh1caiPUHsNj2Vd3ruV4MaiVmYVhItLdcLgp_MdoGjsQSz9kgTULqP-8VAt44Gei1H65bSR9M0eaTg \ г \ nHost: локальный: 44336 \ г \ nReferer: https://localhost: 44336 / Прием / PatientTests / TestResult \ г \ Nuser-Agent: Mozilla / 5.0 (Windows NT 10,0; Win64; 64) AppleWebKit / 537,36 (К HTML, как Gecko) Chrome / 80.0.3987.163 Safari / 537,36 \ г \ nrequestverificationtoken: CfDJ8AIMWfGHX55FkS_e4YdMcby-1dlSJss8EVbTOCIx1QPIjmq7HT5S65FLY_pNB67tGWoUF_1VICPa7tsrXvltyFQpalaUJrpQZcMbj_Yb5Ned8Q9Za3Teyq6FC8gCbk50v_NZj396PEQiVHpOMLrkxEk \ г \ NSE c -fetch-Dest: пусто \ г \ nx-запрашивается-с: XMLHttpRequest \ r \ norigin: https://localhost: 44336 \ r \ nse c -fetch-site: same-origin \ r \ nse c -fetch-mode: Корс \ г \ п», "статус": 500, "его статус": "ошибка"}