JQuery Ajaxを使用してAsp.Net MVC Partial Viewでフォームの投稿を送信します。JQuery Ajaxの後にパーシャルビューが適切にレンダリングされない
パーシャルビューは、ブートストラップタブのタブの1つの内側にあります(4つのタブがあり、各タブにはパーシャルビューがあります)。また、これらのタブをすべてカバーするビューがあります。そして、すべてをカバーするレイアウトがあります。
これは、カバービュー内のパーシャルビューのアクションメソッドの呼び出しです:
@Html.Action("AddProductPartial", "Products")
パーシャルビューのアクション:
[HttpPost]
public ActionResult AddProductPartial(ProductCategoryBrand pcb)
{
if (ModelState.IsValid)
{
Product p = new Product();
p.CategoryID = Convert.ToInt32(pcb.CategoryViewModel.Kategori);
p.BrandID = Convert.ToInt32(pcb.BrandViewModel.BrandName);
p.ExchangeName = pcb.ExchangeViewModel.ExchangeName;
ProductRepository prep = new ProductRepository();
prep.AddProduct(p)
}
loadBrands();
getRates();
return View(pcb);
}
jQueryのアヤックス:
$('#saveProduct').click(function() {
$.ajax({
url: "/Products/AddProductPartial",
type: 'POST',
data: "{'CategoryID':" + categoryID + ", 'BrandID':" + brandID + ",'ExchangeName':" + exchangeName + "}",
async:true,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert("success");
},
error: function (xhr, status, error) {
alert(xhr.responseText)
}
});
});
これらの記述を移入以下dropdownlisforからdb。私はこれらのメソッドを追加しました。なぜなら、部分ビューのdropdownlistforがAjaxのサブミット後にnull例外を与えていたからです。
loadBrands();
getRates();
これらのステートメントを追加した後、問題が発生しました。
サブミット後、パーシャルビューが奇妙にレンダリングされています。ブートストラップのナビゲーションタブは表示されなくなりました。パーシャルビューをカバーするビューはレンダリングされないためです。私は、この行を変更する場合:
return Partial View(pcb);
に
return View(pcb);
をその後独立し、すべてのレイアウトから、唯一のパーシャルビュー自体をレンダリングします。
助けてください。ありがとう。ここで
私はAjaxコードを見ることができますか?おそらく、ajax関数の成功のコールバックでは、部分を含むHTML要素の代わりにWebページ全体を置き換えています。 –
JQuery Ajaxコードを追加しました。 @ChristopherMMillerコードが長すぎると思われるので、パラメータを短縮しました – Zeynep
'@ Html.Action(" AddProductPartial "、" Products ")'を '@ Html.Partial(" AddProductPartial ")'とあなたの 'public ActionResult AddProductPartial '成功/エラー/新製品IDなど – JamieD77