从 ASP.NET 视图调用 C# 函数
Calling C# Function from ASP.NET View
我有一个 ASP.Net Entity Framework 视图,其中有多个下拉列表。一旦用户更改此列表中的项目,我需要调用一个 c# 方法,该方法传递所有下拉列表中的值以检查它们的值是否重叠。
目前我有:
@Html.DropDownListFor(model => model.Periods[i].StartTime, new SelectList(Model.DateTimeList, Model.Periods[i].StartTime), new {@class = "form-control", onchange = "dropdownChange()" })
它调用了一个名为 dropdownChange()
的方法:
<script>
function dropdownChange() {
@{
var overlapping = PeriodController.ConfigureViewModel.IsOverLapping(Model);
}
console.log("here");
}
</script>
此方法可由视图找到,但不会进入我的 c# 代码,因为我通过放入 javascript 代码进行了测试,它是 运行。例如console.log 出现但不调用 c# 代码。
每次更改下拉列表时调用 c# 方法的解决方案或更复杂的方法。
添加了Ajax方法:
$.ajax({
type: "POST",
data: { 'Model': Model },
success: function(isOverLapping) {
overLappping = isOverLapping;
console.log(1);
},
error: function() {
console.log(2);
}
});
一句话回答:MVC 不是那样工作的。
更长的答案:您不能像那样直接从浏览器访问 server-side 代码。最常见的解决方案是使用名为 AJAX 的东西来调用服务器上的 C# 函数。然后您需要在视图中编写代码来处理来自服务器的响应。看看这个问题和这个答案:
我有一个 ASP.Net Entity Framework 视图,其中有多个下拉列表。一旦用户更改此列表中的项目,我需要调用一个 c# 方法,该方法传递所有下拉列表中的值以检查它们的值是否重叠。
目前我有:
@Html.DropDownListFor(model => model.Periods[i].StartTime, new SelectList(Model.DateTimeList, Model.Periods[i].StartTime), new {@class = "form-control", onchange = "dropdownChange()" })
它调用了一个名为 dropdownChange()
的方法:
<script>
function dropdownChange() {
@{
var overlapping = PeriodController.ConfigureViewModel.IsOverLapping(Model);
}
console.log("here");
}
</script>
此方法可由视图找到,但不会进入我的 c# 代码,因为我通过放入 javascript 代码进行了测试,它是 运行。例如console.log 出现但不调用 c# 代码。
每次更改下拉列表时调用 c# 方法的解决方案或更复杂的方法。
添加了Ajax方法:
$.ajax({
type: "POST",
data: { 'Model': Model },
success: function(isOverLapping) {
overLappping = isOverLapping;
console.log(1);
},
error: function() {
console.log(2);
}
});
一句话回答:MVC 不是那样工作的。
更长的答案:您不能像那样直接从浏览器访问 server-side 代码。最常见的解决方案是使用名为 AJAX 的东西来调用服务器上的 C# 函数。然后您需要在视图中编写代码来处理来自服务器的响应。看看这个问题和这个答案: