web-dev-qa-db-ja.com

MVC送信ボタンが作動しない

RazorエンジンでASP.net MVC 4を使用しています。

ページ(Index.cshtml)とコントローラー(HomeController.cs)があります。

自分の送信ボタンをコントローラーのアクション結果に接続しようとしていますが、起動させられないようです。

私のHTML:

_@using (Html.BeginForm("SubmitForm", "Home", FormMethod.Post))
{
      <div class="main-Background">

      ******lots of other html here*******
        <button type="submit" id="btnSave">Save</button>

    </div>
}
_

私のコントローラー:

_public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your app description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }


        [HttpPost]
        public ActionResult SubmitForm()
        {
          return View();
        }

    }
_

現時点では、値をコントローラーに渡すモデルを実装していないので、ActionResult SubmitFormを起動できるかどうかを確認したいと思っていました。

パラメータなしで@using (Html.BeginForm())を試してみましたが、運悪く、ActionResultの上に_[HttpPost]_を含めてみました。

編集 また、ボタンの代わりに_<input type="submit" id="btnSave">Save</input>_を使用してみました。

どこが間違っているのかわからない

12
DNKROZ

JQueryがActionResultのヒットを停止していたことがわかります。

ActionResult機能を「食い尽くす」ボタンクリックイベントがありました。これは、Ajaxを使用してActionResultを呼び出すことで解決しました。

12
DNKROZ

"-Controller"サフィックスを使用する必要はありません。 Homeの代わりにHomeControllerだけを使用すると、MVCが変換します。

使用する

@using (Html.BeginForm("SubmitForm", "Home", FormMethod.Post, new { id = "submitForm" }))

の代わりに

@using (Html.BeginForm("SubmitForm", "HomeController", FormMethod.Post, new { id = "submitForm" }))

完全なコード

ビュー

@using (Html.BeginForm("SubmitForm", "Home", FormMethod.Post, new { id = "submitForm" }))
{
      <div class="main-Background">

          ******lots of other html here*******
          <input type="submit" id="btnSave">Save</input>

    </div>
}

およびコントローラ

[HttpPost]
public ActionResult SubmitForm()
{
    return View();
}
3

見る:

@using (Html.BeginForm("SubmitForm", "Home", FormMethod.Post))
{
  <div class="main-Background">
    ******lots of other html here*******
    <button type="submit" id="btnSave">Save</button>

  </div>
}

コントローラ:

[HttpPost]
public ActionResult SubmitForm()
{
    return View();
}

Div内の他のHTMLが原因で問題が発生している可能性があるため、確認してください。それ以外の場合は、完全に機能します。

1
Sunil Shrestha

パラメータを指定してHtml.BeginFormを追加する必要があります。次に例を示します。

ActionName –アクションの名前。この場合、名前はCreateです。

ControllerName –コントローラーの名前。この場合、名前はHomeです。

FormMethod –フォームメソッド、つまりGETまたはPOSTを指定します。この場合、POSTに設定されます。

http://localhost:60386//Home/Create


@using (Html.BeginForm("Create", "Home", FormMethod.Post))
{
  @Html.EditorFor(model => model.FirstName)

  <input type="submit" value="Create"/>
}


HomeController.cs:
        [HttpPost]
        public ActionResult Create(Person person)
        {

            if (ModelState.IsValid)
            {
                db.Persons.Add(person);
                db.SaveChanges();
                return RedirectToAction("Create");
            }

            return View(person);
        }
0
live-love