Jeśli naprawdę potrzebujesz iść tą drogą, to jest to, co możesz zrobić. Prawdopodobnie istnieją lepsze sposoby na zrobienie tego, ale to wszystko, co mam w tej chwili. Nie wykonałem żadnych połączeń z bazami danych, użyłem tylko danych fikcyjnych. Zmodyfikuj kod, aby dopasować go do scenariusza. Użyłem jQuery
do wypełnienia HTML table
.
W moim kontrolerze mam metodę działania o nazwie GetEmployees
, która zwraca JSON result
ze wszystkimi pracownikami. To jest miejsce, gdzie można by nazwać repozytorium powrócić użytkowników z bazy danych:
public ActionResult GetEmployees()
{
List<User> userList = new List<User>();
User user1 = new User
{
Id = 1,
FirstName = "First name 1",
LastName = "Last name 1"
};
User user2 = new User
{
Id = 2,
FirstName = "First name 2",
LastName = "Last name 2"
};
userList.Add(user1);
userList.Add(user2);
return Json(userList, JsonRequestBehavior.AllowGet);
}
Klasa Użytkownik wygląda następująco:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Państwa zdaniem można mieć następujący:
<div id="users">
<table></table>
</div>
<script>
$(document).ready(function() {
var url = '/Home/GetEmployees';
$.getJSON(url, function (data) {
$.each(data, function (key, val) {
var user = '<tr><td>' + val.FirstName + '</td></tr>';
$('#users table').append(user);
});
});
});
</script>
Jeśli chodzi o powyższy kod: var url = '/Home/GetEmployees';
Home
to kontroler i GetEmployees
to metoda działania zdefiniowana powyżej.
Mam nadzieję, że to pomoże.
UPDATE:
To jak bym to zrobił ..
zawsze utworzyć klasę widoku modelu do widoku. W tym przypadku bym nazwał to coś podobnego UserListViewModel
:
public class UserListViewModel
{
IEnumerable<User> Users { get; set; }
}
w moim kontrolera chciałbym wypełnić tę listę użytkowników z połączenia z bazą danych powrocie wszystkich użytkowników:
public ActionResult List()
{
UserListViewModel viewModel = new UserListViewModel
{
Users = userRepository.GetAllUsers()
};
return View(viewModel);
}
i moim zdaniem Chciałbym mieć:
<table>
@foreach(User user in Model.Users)
{
<tr>
<td>First Name:</td>
<td>user.FirstName</td>
</tr>
}
</table>
Dlaczego chcesz użyć innej metody działania niż strona użytkownikom wypełnić listę? Będzie to wolniejsze i wymaga dwóch próśb niż jednej. –
Do wczytania strony początkowej nie potrzebuję dwóch. Ale podczas przeglądania listy użytkowników muszę ładować listę użytkowników asynchronicznie. Pomyślałem, dlaczego nie wywołać tej samej funkcji dla początkowego obciążenia. – user471317
Które z poniższych odpowiedzi odpowiedziały na Twój problem? –