so I need to get to fetch the names of students in a list of student object that is in a view\'s model then send them to the server via $.post, the latter I have figured it out
You have some invalid javascript over there.
First start by fixing your view model so that you have a compiling C# code (you were missing a property name):
public class StudentSearchResult
{
public IEnumerable Students { get; set;}
}
Then assuming your controller actions sends a JSON result to the client (this ensures that the view model is properly JSON encoded and that the application/json
response content type header is sent):
[HttpPost]
public ActionResult StudentSearchResult(/*other stuff I send here, */ string[] studentNames)
{
StudentSearchResult model = ... //stuff here to populate your view model
return Json(model);
}
you could easily iterate on the client using the $.each() function:
var studentNames = ['name1', 'name2'];
$.post('/Students/StudentSearchResult', studentNames, function(result) {
var students = result.Students;
$.each(students, function() {
alert('FirstName: ' + this.FirstName + ' LastName:' + this.LastName);
});
});
or even a plain ol' for
loop if you prefer:
$.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);
}
});
UPDATE:
It looks like I have I made a mistake by believing that you were performing an AJAX request. Instead what you need is access the model properties in javascript. Here's how this could be done:
@model StudentSearchResult