[英]ASP.NET Core - controller will not return a view
我的控制器有問題 - 它不返回視圖。 我正在向同一個控制器發送一些數據,使用這些數據創建一個新對象,我想將此對象發送到創建視圖,但由於某種原因,我停留在同一頁面上。
Create.cshtml
ReservationController
這是我的控制器操作:
public IActionResult Create(int selectedTime, string selectedDate, int selectedRoomId)
{
TimeSpan time = TimeSpan.Parse($"{selectedTime}:00:00");
DateTime date = DateTime.ParseExact(selectedDate, "MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture);
DateTime combine = date + time;
Reservation reservation = new Reservation();
reservation.RoomId = selectedRoomId;
reservation.ReservationTime = combine;
return View(reservation);
}
而我的觀點:
@model Escape.Models.Reservation
@{
ViewBag.Title = "title";
}
<h2>My create reservation view</h2>
這是我來自的原始視圖:
@using Escape.Controllers
@model Escape.Models.Room
@{
ViewData["Title"] = "Details";
}
<h4 class="title">Booking for room: @Model.Name</h4>
<div>
<p>@Model.Description</p>
<a class="btn btn-link" asp-action="Index">Back to all rooms</a>
<hr />
</div>
<div>
<input id="datepicker" type="text" name="datepicker"
onchange="onDateChange(@Model.Id)" />
</div>
<div>
<div id="displayTimes"></div>
<a id="btn-create" class="btn btn-sm"></a>
</div>
@section Scripts {
<script>
var dateToday = new Date();
$(function () {
$("#datepicker").datepicker({
minDate: dateToday
});
});
</script>
}
我的 btn-create 上的 Ajax 函數:
function onButtonClick(val, date, room) {
var btnBack = document.getElementById("btn-create");
btnBack.innerHTML = "Create reservation";
$(btnBack).addClass('btn-outline-primary');
btnBack.addEventListener("click",
function () {
$.ajax({
type: "GET",
data: { selectedTime: val, selectedDate: date, selectedRoomId: room },
url: "/Reservation/Create",
contentType: "application/json",
dataType: "json"
});
});
}
如果鏈接<a id="btn-create" class="btn btn-sm"></a>
應該調用ReservationController
的Create
方法,那么它是不完整的,這就是您要做的需要將其更改為:
<a asp-controller="Reservation"
asp-action="Create"
id="btn-create" class="btn btn-sm">Create</a>
更新:
您的點擊處理程序似乎確實向控制器發送了一個請求,但在該請求之后沒有任何反應,並且響應(包含來自視圖的 HTML)被丟棄。
既然你想顯示 HTML,也許你甚至不應該使用 AJAX,而是使用我上面的原始答案。
如果由於某種原因您需要 AJAX,那么您需要創建一個顯示 HTML 的success
處理程序:
btnBack.addEventListener("click",
function () {
$.ajax({
type: "GET",
data: { selectedTime: val, selectedDate: date, selectedRoomId: room },
url: "/Reservation/Create",
contentType: "application/json",
dataType: "json",
success: function (data) {
// ... put processing here
}
});
}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.