のasp.net MVCでは動作しません私のjqueryのAJAXは、私がAsp.Net MVCではデータを介してのjQueryのAjaxを送りたい
しかし、機能はここで
私のJavaスクリプトをExcutedエラーセクションと呼ばれていた作成した場合ここで
function create() {
$.ajax({
url: "@Url.Action(actionName:"Create",controllerName:"Tag",routeValues:new { Area="Admin"})",
contentType: "application/json",
type: "POST",
dataType: "json",
data: $("#myForm").serialize(),
success: function (response) {
eval(response.Script);
}, error: function() {
alert("Error");
}
});
は私のアクションメソッド
[ValidateAntiForgeryToken,HttpPost, AjaxOnly]
public ActionResult Create(Tag tag)
{
JsonData data = new JsonData();
if (ModelState.IsValid)
{
if (TagOperation.Where(x => x.Text == tag.Text) != null)
{
try
{
TagOperation.Add(tag);
data.Script = MessageBox.Show("Message", MessageType.Success).Script;
return RedirectToAction(actionName: "Index", controllerName: "Tag", routeValues: new { Area = "Admin" });
}
catch (Exception ex)
{
data.Script = MessageBox.Show("Message", MessageType.Error).Script;
return Json(data);
}
}
}
data.Script = MessageBox.Show(ModelState.GetErrors(), MessageType.Warning).Script;
return Json(data);
}
されており、ここで送る私の図であり、データを介してjQueryのAjaxの
@using (Html.BeginForm("Create", "Tag", FormMethod.Post, new { id = "myForm" })){
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Text, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Text, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Text, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input onclick="create();" type="button" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
「contentType:application/json」を削除して起動します。動作していない場合は、エラーの内容を説明してください。複数のエラーがあります。 Ajax呼び出しはリダイレクトしないので、 'return RedirectToAction()'は無意味です。 'MessageBox.Show()'はMVCではなくWinFormsです –
私はcontentTypeを削除しますが動作しませんし、500ステータスコードとエラータイトルを取得する必要がありますanti-forgeryフォームフィールドです... ValidateAntiForgeryTokenとHtml.AntiForgery My Form.And MessageBoxはJavaScriptを生成するための独自のクラスです – HashemMaya
'500(内部サーバーエラー)'は、コントローラコードがスローして例外を発生していることを意味します。フォームに 'ValidateAntiForgeryToken'を置いたらどういう意味ですか?これはコントローラーメソッドに適用される属性です。 –