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>
_を使用してみました。
どこが間違っているのかわからない
JQueryがActionResultのヒットを停止していたことがわかります。
ActionResult機能を「食い尽くす」ボタンクリックイベントがありました。これは、Ajaxを使用してActionResultを呼び出すことで解決しました。
"-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();
}
見る:
@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が原因で問題が発生している可能性があるため、確認してください。それ以外の場合は、完全に機能します。
パラメータを指定して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);
}