私がやろうとしていることが可能かどうかわからないので、シナリオ全体と、明るい人々が私に知らせることができるより良い方法があれば、私がそのようにしようとしていることを説明します!
これがシナリオです。ビューとPartialViewがあります。PartialViewには、ビューからjavascriptを介して入力されるドロップダウンリストがあります。これは正常に機能します。PartialViewには、div
渡されたモデルの値に基づいて結果を返すコントローラーを呼び出すがあります。必要なのは、モデルとドロップダウンリストの値に基づく結果です。loc
これは、モデル値と、ドロップダウンから取得したいハードコードに基づいて機能するコードです。
<div id="catalogue-view-action-view-ct" class="async-partial" data-url='@Url.Content("~/Catalogue_Items/ItemsActionViewPartial/")@Model.CatalogueItemID?loc=6&AsyncUpdateID=catalogue-view'>
@if (noJs)
{
<span>
@{ Html.RenderAction("ItemsActionViewPartial", "Catalogue_Items", new { id = Model.CatalogueItemID, location = 6, AsyncUpdateID = "catalogue-view-action-view-ct" }); }
</span>
}
else
{
<img src="@Url.Content("~/assets/images/busy.gif")" /><span> Loading...</span>
}
</div>
これdiv
はPartialViewでうまく機能します。ビューではdata-url
、javascriptで問題なく属性を設定できましたが、ページは既に読み込まれているため、更新されません。div
PartialView全体ではなく、「更新」または「再読み込み」する方法はありますか?PartialView全体を実行すると、javascriptがdata-url
属性を設定する前に、htmlが読み込まれるのと同じ状況に戻ります。ビューのJavaScriptは次のとおりです。
var myDiv = document.getElementById('catalogue-view-action-view-ct');
url = '~/Catalogue_Items/ItemsActionViewPartial/20144?loc=' + $('#LocationID').val() + '&AsyncUpdateID=catalogue-view-action-view-ct';
myDiv.setAttribute('data-url', url);
$('#catalogue-view-action-view-ct').load(url);
どんな助けでも大歓迎です。
更新:上記のように相対パスを使用すると、data-url
は正しく設定されますが、load
パスが追加されているため、パスが正しくありません。これが起こることです:
data-url="~/Catalogue_Items/ItemsActionViewPartial/20144?loc=40&AsyncUpdateID=catalogue-view-action-view-ct"
これは完璧で、まさに私が必要としているものですが、ロードされるパスは次のとおりです。
http://www.example.com/catalogue-items/20144/myItem~/Catalogue_Items/ItemsActionViewPartial/20144?loc=40&AsyncUpdateID=catalogue-view-action-view-ct
相対パスが現在の場所の末尾に追加されます。これを修正できますが、「/ myItem」部分を削除する必要があります。これは、URLに含めたくないビューのパラメーターであるためです。絶対パスを使用すると、クロスオリジンエラーが発生します。助言がありますか?
いくつかのコメントの助けを借りて、私は自分の問題の解決策を見つけることができました!を使用$('#catalogue-view-action-view-ct').load(url);
すると、実際にはdata-urlを設定する必要はありませんでした。
しかし、相対パスを適切に機能させるには、次のようにurl.contentで囲む必要がありました。
$('#catalogue-view-action-view-ct').load('@Url.Content("~/Catalogue_Items/ItemsActionViewPartial/")@Model.CatalogueItemID?loc=' + $('#LocationID').val() + '&AsyncUpdateID=catalogue-view-action-view-ct');
この値をロードすると、望ましい結果が得られました。私を正しい方向に導いてくれた@Lalに感謝します!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加