フォーム送信を MVC Razor 送信から Ajax 送信に変換することになっていますが、フォーム (Add.cshtml) のビューで単純な JavaScript 関数を使用しても問題があります。
手始めに、使用したい JS ファイルを次の方法でリンクしてみます。
@section JavaScript
{
<script type="text/javascript" src="@Url.Content("/Scripts/ajax_submit.js")"></script>
}
JavaScript ファイルは次のようになります。
function dosubmit() {
$("#add_address").ajaxForm({ url: '~/Home/Add', type: 'post' })
alert("IT WORKS");
return false;// if it's a link to prevent post
}
そして、次の方法でフォームを作成しました。
@model MvcApplicationTest.Models.PersonModel
@section JavaScript
{
<script type="text/javascript" src="@Url.Content("/Scripts/ajax_submit.js")"></script>
}
@{
ViewBag.Title = "Hinzufügen";
}
<h2>Hinzufügen</h2>
<form id="add_address">
<div class="fieldrow">
@Html.LabelFor(x => x.Nachname)
@Html.TextBoxFor(x => x.Nachname)
@Html.ValidationMessageFor(x => x.Nachname)
</div>
<div class="fieldrow">
@Html.LabelFor(x => x.Vorname)
@Html.TextBoxFor(x => x.Vorname)
@Html.ValidationMessageFor(x => x.Vorname)
</div>
<div class="fieldrow">
@Html.LabelFor(x => x.Strasse)
@Html.TextBoxFor(x => x.Strasse)
@Html.ValidationMessageFor(x => x.Strasse)
</div>
<div class="fieldrow">
@Html.LabelFor(x => x.Hausnummer)
@Html.TextBoxFor(x => x.Hausnummer)
@Html.ValidationMessageFor(x => x.Hausnummer)
</div>
<div class="fieldrow">
@Html.LabelFor(x => x.Plz)
@Html.TextBoxFor(x => x.Plz)
@Html.ValidationMessageFor(x => x.Plz)
</div>
<div class="fieldrow">
@Html.LabelFor(x => x.Ort)
@Html.TextBoxFor(x => x.Ort)
@Html.ValidationMessageFor(x => x.Ort)
</div>
<!--Martin-->
<div class="fieldrow">
@Html.LabelFor(x => x.Email)
@Html.TextBoxFor(x => x.Email)
@Html.ValidationMessageFor(x => x.Email)
</div>
<input type="button" onclick="dosubmit()" value="Speichern" />
</form>
ただし、ボタンをクリックしても何も起こりません (目的のテキストを含むウィンドウがポップアップするはずです)。
JS ファイルを _Layout.cshtml に含めようとしましたが、まだ機能しません。
ご協力いただきありがとうございます :)