在c中使用javascript变量#
可以在c#代码中使用js变量吗 这是我的模型:在c中使用javascript变量#,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,可以在c#代码中使用js变量吗 这是我的模型: public class Department { public int Id { get; set; } public string Name { get; set; } public int? ParentId { get; set; } public virtual ICollection<Department> Parent { get; set; } } 有没有办法做到这一点,或者我一定要使用
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
public virtual ICollection<Department> Parent { get; set; }
}
有没有办法做到这一点,或者我一定要使用ajax?没有,因为javascript代码用于客户端和服务器端的razor 您有两种解决方案: 1-将所有部门放在
列表()
中,并使用JQuery获取变更数据
2-使用jquery ajax并直接从控制器获取数据(为此创建控制器)考虑到在服务页面时,C#在服务器上运行,而在C#完全执行后,JavaScript在客户端上运行-根本不可能以这种方式混合使用它们。您需要研究动态加载数据,例如使用ajax请求。您混淆了客户端和服务器端代码。它们在完全不同的时间和环境中运行。您需要将所有项目发送到页面并在JavaScript代码中有条件地对其进行操作,或者从JavaScript代码发出AJAX请求以在页面加载后获取所需的项目。
@model List<inspinia.models.Department>
<select name="DepartmentId" class="form-control" id="Department">
@foreach (var item in Model)
{
<option value="@item.Id">@item.Name</option>
}
</select>
<script>
$(document).ready(function () {
$("#Department").on("change", function () {
var DepartmentId = $('option:selected', this).attr('value');
//the problem in the next line.
@foreach(var item in Model.Where(x=>x.ParentId==@:DepartmentId))
{
@:alert(@item.id)
}
});
});
</script>
Model.Where(x=>x.ParentId==@:JAVASCRIPT VARIABLE).