0

何が間違っているのかわかりません。レイアウト内の部分的なビューにフォームがあり、フォームが送信されたときにコントローラーを起動できません。フォームは単に localhost:54719/FormController に投稿されます/ExecutePost とエラー

The controller for path '/FormController/ExecutePost' was not found or does not implement IController.

レイアウト コード: ~/Views/Shared/_Layout.cshtml

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>
        @ViewBag.PageTitle
    </title>
    <link rel="stylesheet" media="all" href="/Content/style.css">
</head>
<body>
    @Html.Partial("_Header");
    <!-- / header -->
    @Html.Action("Header", "Menu")
    <!-- / navigation -->
    @Html.Partial("_Form");
 <!--Form -->
    <div id="body">
        @RenderBody();
    </div>
    <!-- / body -->
    @Html.Partial("_Footer")
    <!-- / footer -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>    
    <script src="/Content/js/plugins.js"></script>
    <script src="/Content/js/main.js"></script>
</body>
</html>

フォームコード: ~/Views/Shared/_Form.cshtml

@model MathsDoctor.Models.FormModel

@using (Html.BeginForm("ExecutePost", "FormController", FormMethod.Post))
{

<div class="form" id="find-form">
    <fieldset><label>Telephone:</label>
        @Html.TextBoxFor(model => model.Telephone)
        @Html.ValidationMessageFor(model => model.Telephone)
    </fieldset>
    <fieldset><label>Name:</label>
        @Html.TextBoxFor(model => model.Name)
        @Html.ValidationMessageFor(model => model.Name)
    </fieldset>
    <fieldset><label>Postcode:</label>
        @Html.TextBoxFor(model => model.Postcode)
        @Html.ValidationMessageFor(model => model.Postcode)
    </fieldset>
    <fieldset><input type="submit" value="SUBMIT">
    </fieldset>
</div>
}

フォームコントローラー: ~/Controllers/FormController.cs

public class FormController : Controller
{
    //
    // GET: /FindTutorForm/

    [HttpPost]
    public ActionResult ExecutePost(Models.FormModel formModel)
    {
        if (ModelState.IsValid)
        {
            return Redirect("/thanks/");
        }

        return PartialView("~/Views/Shared/_Form.cshtml");

    }
}

私は本当に単純なものを見逃したと確信しています...

4

1 に答える 1

2

試す

Html.BeginForm("ExecutePost", "Form", FormMethod.Post)

「コントローラー」部分は自動的にマップされるため、削除する必要があります。

于 2013-03-28T10:37:45.627 に答える