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();
        }

查看 ~/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 回答