jQueryを使用してPartialViewである編集フォームをdivにロードしようとしています。EditUserアクションをオーバーロードしています。1つ目は、IDを渡し、既存の詳細をフォームにロードするためのものです。2つ目は、保存のためにフォームをポストバックするためのものです。しかし、jQueryとUrl.Actionを使用してロードすると、2番目のメソッドが呼び出されるようです。2番目のEditUserメソッドをコメントアウトすると、1番目のメソッドが呼び出されます。何故ですか?どうすればstaffIDを渡したときに最初のものを呼び出すことができますか?または、この編集フォームを部分ビューシナリオで実装するためのより良い方法はありますか?
また、CreateUserアクションは、1つにはパラメーターがなく、もう1つにはパラメーターとしてモデルがあるため、オーバーロードされたメソッドにあいまいさがないため、問題なく機能します。
ありがとう
これは私のコントローラーです:
public PartialViewResult EditUser(String staffId)
{
User um = userService.GetUserDetails(1, staffId, true);
return PartialView(um);
}
[HttpPost]
public PartialViewResult EditUser(User um)
{
if (!TryUpdateModel(um))
{
ViewBag.updateError = "Edit Failure";
return PartialView("EditUser", um);
}
userService.CreateUpdateUser(um);
return PartialView("ViewUser", um);
}
public PartialViewResult CreateUser()
{
ViewBag.Message = "Create New User";
return PartialView(new User());
}
[HttpPost]
public ActionResult CreateUser(User um)
{
if (!TryUpdateModel(um))
{
ViewBag.updateError = "Create Failure";
return PartialView(um);
}
userService.CreateUpdateUser(um);
return View("Index");
}
EditUserの部分ビューをロードする方法は次のとおりです。
function menuEdit() {
$('#ActionMenu').hide();
$('#SearchBar').hide();
$('#SearchPanel').hide();
$('#SearchResult').hide();
$('#AddViewEditUser').load("@Url.Action("EditUser","User")", {staffId : sId});
$('#AddViewEditUser').show();
}