Javascript Uncaught ReferenceError - ASP.NET MVC
Javascript Uncaught ReferenceError - ASP.NET MVC
我目前在我的MVC视图中有一个foreach
循环,它为每个人创建一个表行,每个人都有一个下拉列表,需要在onchange
事件期间执行JavaScript。此onchange
事件将根据所选值在同一表行内填充另一个下拉列表。
var count = 0;
@foreach(var item in Model.Items)
{
<tr>
<td>
@Html.DropDownListFor(
model => item.SelectedId,
new SelectList(item.MyList, "ID", "Name"),
new
{
@class = "form-control",
@id = string.Concat("MyControl", count),
@name = string.Concat("MyControl", count),
@onchange = string.Format("javascript:MyJsFunction(this.value, {0});", count);"
}
)
@Html.DropDownListFor(
model => item.ChildSelectedId,
new SelectList(item.MyChildList, "ID", "Name"),
new
{
@class = "form-control",
@id = string.Concat("MyChildControl", count),
@name = string.Concat("MyChildControl", count)
}
)
</td>
</tr>
count++;
}
在视图的底部,我有以下<script>
块:
<script>
$(document).ready(function () {
//do some other stuff here
});
function MyJsFunction(value, id) {
var loadingMsg = "<option value='0'>Loading...</option>";
var url = "/MyApp/Controller/Action/";
var targetControl = "#MyChildControl" + id
$(targetControl).html(loadingMsg).show();
$.ajax({
url: url,
data: { Id: value },
cache: false,
type: "POST",
success: function (data) {
var markup = "<option value='0'>- My Child Control - </option>";
for(var i = 0; i < data.length, i++) {
markup += "<option value=" + data[i].Value + ">" + data[i].Text + "</option>";
}
$(targetControl).html(markup).show();
},
error: function (response) {
alert("error: " + response);
}
});
}
</script>
当我运行代码并更改下拉列表中的值时,我得到以下错误:
Uncaught ReferenceError: MyJsFunction is not defined
如何解决此错误?
与Stephen Muecke合作,他帮助我开发了以下代码片段来解决我的问题:
HTML:@foreach(var item in Model.Items)
{
<tr>
<td>
@Html.DropDownListFor(
model => item.SelectedId,
new SelectList(item.MyList, "ID", "Name"),
new
{
@class = "form-control parent",
@id = ""
}
)
@Html.DropDownListFor(
model => item.ChildSelectedId,
new SelectList(item.MyChildList, "ID", "Name"),
new
{
@class = "form-control child",
@id = ""
}
)
</td>
</tr>
}
JavaScript: <script>
$('.parent').change(function() {
var url = "/MyApp/Controller/Action/";
var id = $(this).val();
var target = $(this).closest('tr').find('.child');
target.empty();
$.ajax({
url: url,
data: { Id: id },
cache: false,
type: "POST",
success: function (data) {
target.append($('<option></option>').val('').text('- Child Control -'));
$.each(data, function (index, item) {
target.append($('<option></option>').val(item.Value).text(item.Text));
});
},
error: function (response) {
alert("error: " + response);
}
});
});
</script>
相关文章:
- 将Javascript数组发送到控制器ASP.NET MVC
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- C#asp.net mvc Set CheckBoxFor已检查的具有Model Value的属性
- ASP.NET MVC 3-在ajax调用后,重定向到新页面或生成页面刷新
- ASP.NET MVC,在文本框旁边显示文本
- Angular promise return"未定义的“;值.NET MVC
- asp.net MVC,重定向到视图,视图打开新窗口到外部url,它'It’’’’我们被当成一种风景
- 当用户点击动态创建的链接时,如何调用JS方法.JQuery,ASP.NET MVC
- 使用jquery变量作为.net MVC中ActionLink的参数
- 带有接口的ASP.NET MVC RegisterModel
- OnClick对ActionLink-ASP.NET MVC中的Prevent无效
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 如何在asp.net mvc 3上进行触摸屏操作
- asp.net mvc中的javascript验证不适用于登录表单
- ASP.NET MVC-如何捕获多个复杂的ListBox值并将其保存到数据库中
- ASP.NET MVC路由-动态加载.js脚本
- 如何在asp.net MVC中从View获取值到JavaScript
- 在带有 bootbox 的自定义对话框中添加选项以选择表单控件.js在 ASP.NET MVC 中
- 谷歌将部分页面加载后自动完成不起作用 ASP.Net MVC
- ASP.Net MVC 脚本无法使用控制器的默认操作 URL.使用控制器/操作 URL 也是如此