0

これは初めてで、コントローラーに到達しない理由がわかりません。ID を入力しても何も起こらず、コントローラーのブレークポイントにヒットしません。私は何か見落としてますか?

コントローラ ~/Controllers/AppointmentController.cs

[HttpPost]
        public ActionResult Schedule(int id = 0)
        {
            if (Request.IsAjaxRequest())
            {
                Customer customer = _customerRepository.Find(id);
                return PartialView("Schedule", customer); 
            }
            return View();
        }

VIEW ~/Views/Appointment/Schedule.cshtml

@model Customer
@{
    ViewBag.Title = "Schedule";
}

<h2>Schedule</h2>

@using (Ajax.BeginForm("Schedule", "Appointment",
    new AjaxOptions()
{
    HttpMethod = "POST",
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "Customer"
}))
{
    <label>ID Search</label>
    <input type="search" name="customerSearch" placeholder="ID" />
    <input type="submit" value="Continue" />
}
<div id="Customer">
    @Html.Partial("~/Views/Customer/_Customers.cshtml", Model)
</div>
4

1 に答える 1

0

[HttpPost] というラベルの付いたアクションがあります。

これは、POST HttpMethod を使用した AJAX リクエストでは正常に機能しますが、最初のページの読み込みは GET リクエストになります。[HttpPost] を削除するか、次のように再構築してみてください。

    [HttpPost]
    public ActionResult Schedule(int id = 0, string customerSearch = "")
    {
        Customer customer = _customerRepository.Find(id);
        return PartialView("Schedule", customer); 
    }

    [HttpGet]
    public ActionResult Schedule(int id = 0)
    {
        return View();
    }

また、AJAX フォームは name="id" の入力から投稿されていないため、対処する必要があります。

于 2013-09-12T09:51:51.293 に答える