そのため、ビューのモデルにある学生オブジェクトのリストで学生の名前を取得し、$.post を介してサーバーに送信する必要があります。後者は理解しましたが、方法がわかりませんオブジェクトのリストを反復します。基本的に私はこれを持っています:
//Student object
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
//Like a bunch of other attributes here
}
ビュー内のモデルは次のとおりです。
//StudentSearchResult ViewModel
public class StudentSearchResult {
public IEnumerable<Student> { get; set;}
}
最初は学生リストオブジェクトをそのまま送信するだけでしたが、あまりにも多くの属性がバンドルされているため、良い考えではないかもしれません (モデルを送信しようとすると、この「循環」エラーが発生しました)。私がすでに持っている $.post メソッドを使用して、連結された FirstName と LastName をコントローラーに送信する必要があります。私はこれらのようなことを試しました:
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 で反復処理し、属性にアクセスしてそれらを連結し、それらを文字列の配列に格納して、コントローラーに送ってもいいですか?コントローラーはこんな感じになると思います
[HttpPost]
public ActionResult StudentSearchResult(/*other stuff I send here, */ string[] studentNames){
//stuff here
return View();
}
ありがとう!