.net内核在Javascript中使用razor函数
嗨,我在js中使用了c代码。我的js和.cshtml页面是分开的。我在.cshtml页面中编写了一个函数,并在.js文件中调用它 在Js文件中.net内核在Javascript中使用razor函数,javascript,c#,asp.net-core,Javascript,C#,Asp.net Core,嗨,我在js中使用了c代码。我的js和.cshtml页面是分开的。我在.cshtml页面中编写了一个函数,并在.js文件中调用它 在Js文件中 DataList.forEach(function (item) { ... var users = GetUsers(item.AssignedUsers); 它在这里 Index.cshtml <script> function GetUsers(userIdList) { //it l
DataList.forEach(function (item) {
...
var users = GetUsers(item.AssignedUsers);
它在这里
Index.cshtml
<script>
function GetUsers(userIdList) {
//it logs it, i can get theese values from here
console.log("userIdList");
console.log(userIdList);
@{ // but in here it says userIdList does not exist in current content
//also tryed this.userIdList
var users = userIdList.Split(",");
foreach (var item in users)
{
var user = _Manager.FindByIdAsync(item.UserId).Result;
}
}
}
</script>
函数GetUsers(userIdList){
//它记录下来,我可以从这里得到这些值
log(“userIdList”);
log(userIdList);
@{//但在这里,它表示当前内容中不存在userIdList
//还尝试了this.userIdList
var users=userIdList.Split(“,”);
foreach(用户中的var项)
{
var user=\u Manager.FindByIdAsync(item.UserId).Result;
}
}
}
您可以将列表从ajax传递给控制器操作,操作返回您想要的列表。
下面是一个演示:
<button onclick="sendData()">
send
</button>
<script>
function sendData() {
//here is a sample list
var list = [];
var user1 = {};
user1.Id = 1;
user1.Name = "u1";
list.push(user1);
var user2 = {};
user2.Id = 2;
user2.Name = "u2";
list.push(user2);
$.ajax({
type: "POST",
url: '@Url.Action("SendData", "Test")',
contentType: "application/json",
data: JSON.stringify(list),
}).done(function (data) {
console.log(data);
//the data is you want
});
}
</script>
结果:
任何人都可以帮助我,我无法访问c#razor
中的userIdList函数参数,在这里它说userIdList不存在
…是的,因为它是一个JavaScript变量而不是c#变量。你不能就这样把各种语言混在一起。它们在不同的时间和地点执行(浏览器用于JavaScript,服务器用于c#)。如果您需要根据JavaScript生成的值调用一些c#,那么显而易见的做法是向服务器发出AJAX请求,然后服务器可以执行c#,并返回响应。这可能有助于您阅读以下内容:(许多示例都是关于PHP的,但相同的概念适用于asp.net或任何其他服务器端语言)我明白,我也想过ajax,但它可能会花费很多。这是一个解决方案,但我必须设置简单的数据。我还在循环它,您可以在一个Ajax请求中将整个列表发送到服务器,并在那里循环,然后在响应中返回一个列表。不需要多个Ajax请求,这将是低效的
public List<User> SendData([FromBody]List<User> list) {
//you can do something and return a list you want here
return list;
}
public class User {
public int Id { get; set; }
public string Name { get; set; }
}