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

时间:2018-03-15 21:22:29

标签: javascript c# asp.net asp.net-mvc entity

我有一个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);
    }
});

1 个答案:

答案 0 :(得分:1)

一行答案:MVC不会那样工作。

更长的答案:您无法直接从浏览器访问服务器端代码。最常见的解决方案是使用名为AJAX的东西来调用服务器上的C#函数。然后,您需要在View中编写代码以处理来自服务器的响应。看看这个问题和这个答案:https://stackoverflow.com/a/16186212/5173105