2

私は、部分ビューと 2 番目の部分Detailsビューで構成されるビューを持っています。_Tabs_Contents

部分ビューの 1 つ ( _Tabs) には画像リンクがあり、onclick関数には変数を渡していますCatID。この変数には、部分ビュー ( と呼ばれるTabsForItemViewModel) の ViewModel のプロパティの値が含まれます。

デバッグ時に画像をクリックすると、VS は次のように表示します。

Microsoft JScript ランタイム エラー: 'CatID' が定義されていません

部分ビュー "_Tabs":

部分ビューのビュー モデル_TabsTabsForItemViewModel

@model TabsForItemViewModel
@{
   int CatID = Model.CategoryInfo.CatID; 
 }

<ul>
<li>
   <a href="#GoToCatLevel">
     <img border="0" src="view_cat.png" alt ="Up" title="Go To This Category" 
          width="10" height="10" onclick="LoadCategoryData(CatID, this.href)" />
   </a>
</li>
...

詳細を見る":

@model ItemDetailsViewModel
@{    
    ViewBag.Title = "Item Details";
}

<div id="Main">
...
   CategoryInfoViewModel categoryData = new CategoryInfoViewModel(itemD.Ca_ID);                                                   

    TabsForItemViewModel tabsForItem = new TabsForItemViewModel(categoryData);
    <div id="Tabs" class="div-tab">                      
        @{Html.RenderPartial("~/Views/Item/_Tabs.cshtml", tabsForItem );}
    </div>
    ...
</div>
4

3 に答える 3

4

CatIDは Javascript 変数ではありません... ページにレンダリングする必要があるのは ac# 変数です。Razor 構文を使用すると、次のようになります。

onclick="LoadCategoryData(@CatID, this.href)"
于 2012-06-22T08:58:37.013 に答える
3

onclick 関数で送信するときに、CatID の前に @ 記号を付けるのを忘れています。

そのはず:

   onclick="LoadCategoryData(@CatID, this.href)"
于 2012-06-22T09:00:25.957 に答える
1

最初<img>にプロパティを持っていませんhref。にクリック ハンドラを追加しようとしています<a>か?

個人的には、あなたのように html 要素に JavaScript を混在させることはお勧めしません。邪魔にならない JavaScript を使用する必要があります。

あなたはこのようなことを試すことができます、

<img id=".img" border="0" src="view_cat.png" alt ="Up" title="Go To This Category" 
          width="10" height="10" data-catid="@CatID" />

<script type="text/javascript">
  $(".img").click(function(){
     LoadCategoryData($(this).data("catid"), $(this).attr("src"));
  });
</script>

これで、このスクリプトを別のファイルに入れることができます。

于 2012-06-22T09:23:38.893 に答える