Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从ASP.NET视图调用C#函数_Javascript_C#_Asp.net_Asp.net Mvc_Entity - Fatal编程技术网

Javascript 从ASP.NET视图调用C#函数

Javascript 从ASP.NET视图调用C#函数,javascript,c#,asp.net,asp.net-mvc,entity,Javascript,C#,Asp.net,Asp.net Mvc,Entity,我有一个ASP.Net实体框架视图,其中有多个下拉列表。一旦用户更改了此列表中的一个项目,我需要调用一个c#方法,该方法将传递所有下拉列表中的值,以检查它们的值是否重叠 目前我有: @Html.DropDownListFor(model => model.Periods[i].StartTime, new SelectList(Model.DateTimeList, Model.Periods[i].StartTime), new {@class = "form-control", onc

我有一个ASP.Net实体框架视图,其中有多个下拉列表。一旦用户更改了此列表中的一个项目,我需要调用一个c#方法,该方法将传递所有下拉列表中的值,以检查它们的值是否重叠

目前我有:

@Html.DropDownListFor(model => model.Periods[i].StartTime, new SelectList(Model.DateTimeList, Model.Periods[i].StartTime), new {@class = "form-control", onchange = "dropdownChange()" })
它调用了一个名为
dropdownChange()
的方法:


一句话回答:MVC不是那样工作的


更详细的回答:您不能像那样直接从浏览器访问服务器端代码。最常见的解决方案是使用AJAX调用服务器上的C#函数。然后需要在视图中编写代码来处理来自服务器的响应。看看这个问题和答案:

你需要用Ajax调用控制器动作方法。这个怎么样?我添加了一个Ajax方法,但找不到变量模型,当我在c#中使用它时,可以找到它。请参阅原始帖子:您将服务器端代码和客户端代码混为一谈。您的C#模型/类代码在用户浏览器中不存在(在AJAX区域中)。您可以传递模型的实例,但它只是原始数据。你不能用JavaScripts来分配一个C#模型,因为它很有意义。谢天谢地,MVC不是那样工作的。基于浏览器的应用程序通常不会这样工作。
<script>
    function dropdownChange() {
        @{
            var overlapping = PeriodController.ConfigureViewModel.IsOverLapping(Model);
        }
        console.log("here");
    }
</script>
$.ajax({
    type: "POST",
    data: { 'Model': Model },
    success: function(isOverLapping) {
        overLappping = isOverLapping;
        console.log(1);
    },
    error: function() {
        console.log(2);
    }
});