gpt4 book ai didi

c# - Javascript:如何遍历模型中的对象列表

转载 作者:可可西里 更新时间:2023-11-01 02:50:46 24 4
gpt4 key购买 nike

所以我需要在 View 模型中的学生对象列表中获取学生的姓名,然后通过 $.post 将它们发送到服务器,后者我已经弄清楚了但我无法弄清楚了解如何遍历对象列表。基本上我有这个:

//Student object
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
//Like a bunch of other attributes here
}

这是 View 中的模型:

//StudentSearchResult ViewModel

public class StudentSearchResult {

public IEnumerable<Student> { get; set;}
}

起初我虽然只是按原样发送学生列表对象,但这可能不是一个好主意,因为它捆绑了太多属性(当我尝试发送模型时它给了我这个“循环”错误)我只需要使用我已有的 $.post 方法将串联的 FirstName 和 LastName 发送到 Controller 。我试过这样的事情:

var names = []  
var length = "@Model.StudentSearchResult.count()";
for (int i = 0; i < length; i++)
{
names[] = "@Model.StudentSearchResult[i].Name + @Model.StudentSearchResult[i].LastName"
}
//$.post function here that calls the controller and send the concatenated names of each student in studentsearchresult.

但是我会得到一个错误“i”不存在,所以我如何在 javascript 中遍历我的 View 模型中的对象列表,访问属性并将它们连接起来,然后将它们存储在一个数组中字符串以便我可以将它发送到 Controller ?我想象 Controller 看起来像这样

[HttpPost]
public ActionResult StudentSearchResult(/*other stuff I send here, */ string[] studentNames){
//stuff here

return View();
}

谢谢!

最佳答案

你那里有一些无效的 javascript。

首先修复您的 View 模型,以便您拥有编译 C# 代码(您缺少属性名称):

public class StudentSearchResult 
{
public IEnumerable<Student> Students { get; set;}
}

然后假设您的 Controller 操作向客户端发送了一个 JSON 结果(这确保了 View 模型是正确的 JSON 编码并且发送了 application/json 响应内容类型 header ):

[HttpPost]
public ActionResult StudentSearchResult(/*other stuff I send here, */ string[] studentNames)
{
StudentSearchResult model = ... //stuff here to populate your view model
return Json(model);
}

您可以使用 $.each() 轻松地在客户端上进行迭代功能:

var studentNames = ['name1', 'name2'];
$.post('/Students/StudentSearchResult', studentNames, function(result) {
var students = result.Students;
$.each(students, function() {
alert('FirstName: ' + this.FirstName + ' LastName:' + this.LastName);
});
});

如果您愿意,甚至可以使用普通的 for 循环:

$.post('/Students/StudentSearchResult', studentNames, function(result) {
var students = result.Students;
for (var i = 0; i < students.length; i++) {
var student = students[i];
alert('FirstName: ' + student.FirstName + ' LastName:' + student.LastName);
}
});

更新:

看来我误以为您正在执行 AJAX 请求。相反,您需要的是在 javascript 中访问模型属性。这是如何做到的:

@model StudentSearchResult
<script type="text/javascript">
var students = @Html.Raw(Json.Encode(Model.Students));
// students is a javascript array that will look like this:
// students = [{"FirstName":"fn1","LastName":"ln1"}, {"FirstName":"fn2","LastName":"ln2"}, ...];
for (var i = 0; i < students.length; i++) {
var student = students[i];
alert('FirstName: ' + student.FirstName + ' LastName:' + student.LastName);
}
</script>

关于c# - Javascript:如何遍历模型中的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14433406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com