この部分ビューを1ページに複数回レンダリングしています。
@model POS.Domain.Entities.Category
<div class = "category" id= "@Model.Name">
<h2>@Model.Name</h2>
<a href='javascript:getView();'>Get Partial View</a>
<script type="text/javascript">
function getView() {
$('#divResult').load("@Url.Action("ProductList" , "Product", new {category = Model.Name})");
}
</script>
<div id="divResult">
</div>
</div>
アイデアは、誰かがGet Partial View
リンクをクリックすると、カテゴリ値を使用して私のProductList
アクションによって生成された部分ビューをコントローラにロードし、その部分ビューを適切なdivに追加するというものです。Product
Model.Name
divResult
問題は、ページが読み込まれた後、ユーザーがいずれかのGetPartialView
リンクをクリックすると、最終カテゴリに含まれる製品のリストが読み込まれ、それらが最上位のdivResult
divに追加されることです。
jQueryを使用して情報を適切にロードするようにスクリプトを変更する際のガイダンスを少し期待しています。また、この部分ビューが読み込まれるたびにスクリプトを繰り返すべきではないと感じています。。。Get Partial View
では、ユーザーがリンクの1つをクリックすると、次のようになる適切なjQueryスクリプトをどのように記述すればよいでしょうか。
- リンクの親divのIDを取得します(
@ModelName
) - そのIDを使用して、アクションを呼び出します。
@Url.Action("ProductList", "Product", new {category = **that id**})";
- そのアクションによって返された部分ビューを、
divResult
このステップの2つ上のステップで見つかった親div内にあるIDを持つdivに追加します
アップデート
これが私の見解からのHTMLです:
<div class = "category" id= "Balls">
<h2>Balls</h2>
<a href='javascript:getView();'>Get Partial View</a>
<script type="text/javascript">
function getView() {
var $category = $(this).closest(".category");
var categoryName = $category.attr("id");
//var categoryName ="Balls";
$('.divResult').load("/Product/ProductList",
{category: categoryName});
}
</script>
<div class="divResult">
</div>
</div>
<div class = "category" id= "Drinks">
<h2>Drinks</h2>
<a href='javascript:getView();'>Get Partial View</a>
<script type="text/javascript">
function getView() {
var $category = $(this).closest(".category");
var categoryName = $category.attr("id");
//var categoryName ="Balls";
$('.divResult').load("/Product/ProductList",
{category: categoryName});
}
</script>
<div class="divResult">
</div>
</div>
の値を手動で渡すとBalls
、カテゴリcategoryName
から商品を受け取ることができますが、使用すると、を取得します。Balls
var categoryName = $(this).closest(".category").attr("id");
undefined
たぶん、HTMLを見ることが役立つでしょうか?