【问题标题】:C# variable passed as argument to onclick() is undefined作为参数传递给 onclick() 的 C# 变量未定义
【发布时间】:2012-06-24 13:36:54
【问题描述】:

我有一个视图Details,它由一个局部视图_Tabs 和第二个局部视图_Contents 组成。

在其中一个部分视图 (_Tabs) 中,我有一个图像链接,在 onclick 函数中,我传递了一个变量 CatID。 此变量包含局部视图的 ViewModel 的属性值(称为TabsForItemViewModel)。

调试时,点击图片时,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>

【问题讨论】:

    标签: c# javascript .net asp.net-mvc exception-handling


    【解决方案1】:

    CatID 不是 Javascript 变量...它是需要呈现到页面中的 c# 变量。使用 Razor 语法,这将是:

    onclick="LoadCategoryData(@CatID, this.href)"
    

    【讨论】:

      【解决方案2】:

      您在onclick函数中发送时忘记在CatID前面加上@符号。

      应该是:

         onclick="LoadCategoryData(@CatID, this.href)"
      

      【讨论】:

      • 谢谢,但不能接受你的,因为spender的回答是第一个,而且解释性更强。
      【解决方案3】:

      首先&lt;img&gt; 没有属性href。您是否尝试将点击处理程序添加到&lt;a&gt;

      我个人不建议你像以前那样在 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>
      

      现在您可以将此脚本放在单独的文件中。

      【讨论】:

      • 你说得对,我已经在this SO discussion 的帮助下修复了它。将清理其余代码,谢谢。
      猜你喜欢
      • 1970-01-01
      • 2011-10-21
      • 2016-06-14
      • 2014-08-18
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多