私のエリア登録でこれら2つのルートを区別するにはどうすればいいですか?フォームが正しいコントローラアクションに投稿されないのはなぜですか?
これは、そのエリア登録の最後の2つのルートです。
最初のルートは、ビューが読み込まれるときです。正常に動作します。
最初のルートがフォームをロードし、その後同じコントローラに送信されますが、異なるアクションが送信されます。
コントローラからは決してOKです。ルーティングの問題のためにコントローラに当たっていない可能性があります。
私には何が欠けていますか?
context.MapRoute(
"Load",
"app/respond/{Id}",
new { controller = "Controller1", action = "Index" }
);
context.MapRoute(
"Update",
"app/respond/{action}",
new { controller = "Controller1", action = "Update" }
);
これは、フォームがどのように見えるかです:
@using (Html.BeginForm("Update", "Respond", FormMethod.Post, new { id = "frmUpdate" }))
{
//all form fields go here
}
これは、投稿がどのように行われるかである。
$('#frmUpdate').submit(function() {
//verify all field values
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
if (result.s == 'OK')
alert("Success! Response updated");
else
alert("Sorry! Update failed.");//this is what I get
}
});
return false;
});
マイコントローラー:
[HttpPost]
public ActionResult Update(MyModel model)
{
return Json(new { s = "OK", m = "Hi from controller" });
}
私のケースでは、両方のケースが全く同じURLを持っていますが、私はアクションのために異なる値を持っています。 2番目のルートは同じURLであるため、同じIDを持つため、idに制約を追加できません。フォームの送信後に同じページにユーザーを置いているためです。私はユーザーの結果を非同期的に表示します。 – kheya
提出されたフォームを読み込みます。提出すると、私はDBアクションをいくつか行い、その結果をユーザーに表示しないようにしたい。これは、jqueryを使用して非同期で行われます。ロードするアクションは、更新するアクションとは異なります。私はそれを正しくしていますか? – kheya
@Projapati、あなたの現在のルート設定では、あなたはそれを正しくやっていないルート制約なし。 –