0

フロント ページが正しく読み込まれるフォームがありますが、送信しようとすると次のエラーが発生します。

The resource cannot be found.

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly. 

Requested URL: /Search/DoSearch

次のコントロールを持つMVC 3フォームがあります

public class HomeController : Controller
    {


        [HttpGet]
        public ViewResult Index()
        {
            return View();
        }

        [HttpPost]
        public ViewResult Index(FormModel formModel)
        {

            return View("Thanks", formModel);
        }

    }

インデックスページにはフォームがあります

@model RequestForm.Models.FormModel
@{
    Layout = null;
}
<html>
<head>
<link rel="Stylesheet" href="@Href("~/Content/Site.css")" type="text/css"/>
<title>Request page</title>
</head>
<body>
@using (Html.BeginForm("DoSearch", "Search", FormMethod.Post, new { @class = "form-class" })){
      @Html.LabelFor(x => x.fullName,"Full Name")
      @Html.TextBoxFor(x => x.fullName)


      @Html.LabelFor(x => x.address, "Address")
      @Html.TextBoxFor(x => x.address)

      @Html.LabelFor(x => x.phone, "Phone Number")
      @Html.TextBoxFor(x => x.phone)

      @Html.LabelFor(x => x.email,"Email")
      @Html.TextBoxFor(x => x.email)
    <br />
    <input type="submit" value="submit" />
}
</body>
</html>

サンクスビューページもあります

@model RequestForm.Models.FormModel

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <title>Thanks</title>
</head>
<body>
    <div>
        Thank you for your submission
    </div>
</body>
</html>

サンクス ビュー ページが呼び出されないのはなぜですか? また、要求された URL が検索/Dosearch を実行するのはなぜですか?

4

2 に答える 2

3

あなたのフォームはコントローラーのDoSearchアクションメソッドに投稿されています。Searchこれを修正するには、ビューのフォーム宣言部分を変更する必要があります。Indexのアクション方法に変更しHomeControllerます。

あなたの見解では、これを変更してください

@using (Html.BeginForm("DoSearch", "Search", FormMethod.Post, new { @class = "form-class" })){

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-class" })){

フォームに class 属性を付けたくない場合は、上記を次のように単純化できます

@using (Html.BeginForm())
{
  // form elements
}
于 2012-05-29T20:32:53.720 に答える
0

コントローラー側で定義されていない送信ハンドラーがないようです。

表示されているターゲット パラメーターを使用して送信する場合は、コントローラーのアクション メソッド DoSearch が SearchController である必要があります。それ以外の場合は、フォームのターゲット パラメーターを

HTML.BeginForm("Index","Home")
于 2012-05-29T20:45:12.233 に答える