我有一个视图Details
,其中包含部分视图_Tabs
和第二部分视图_Contents
。
在其中一个部分视图(_Tabs
)中,我有一个图像链接,在onclick
函数中,我传递了一个变量CatID
。
此变量包含局部视图(称为TabsForItemViewModel
)的ViewModel的属性值。
调试时,单击图像时,VS显示:
Microsoft JScript运行时错误:'CatID'未定义
部分视图“_Tabs”:
部分视图_Tabs
的查看模型为TabsForItemViewModel
@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>
答案 0 :(得分:4)
CatID
不是Javascript变量...它是需要呈现到页面中的c#变量。使用Razor语法,这将是:
onclick="LoadCategoryData(@CatID, this.href)"
答案 1 :(得分:3)
当您在onclick功能中发送@ID时,您忘记在其前面放置一个@符号。
应该是:
onclick="LoadCategoryData(@CatID, this.href)"
答案 2 :(得分: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>
现在您可以将此脚本放在单独的文件中。