簡體   English   中英

ASP.NET Core - 控制器不會返回視圖

[英]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>應該調用ReservationControllerCreate方法,那么它是不完整的,這就是您要做的需要將其更改為:

<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM