Affichage de la Liste de retour à partir d'un contrôleur à une table dans la vue ASP.NET MVC4

J'ai une fonction dans ma classe de contrôleur, il retourne une liste de données, je veux l'afficher dans le tableau de la structure de mon point de vue page.
j'ai essayé le code suivant mais il montre une erreur

"De la classe ne contient pas de définition de GetEnumerator"

Contrôleur

public ActionResult data(Message msg,IEnumerable<sample> dept)
{
    dbconnection db = new dbconnection();
    sample s = new sample();
    SqlConnection con = new SqlConnection(db.GetconString());
    DataTable dt;   
    List<examplemvc1.Models.sample> datatable = new List<sample>();
    dt = db.BuildDT("select * from MVCsample");
    foreach (DataRow row in dt.Rows)
    {
        s.FirstName = Convert.ToString(row["First Name"]);
        s.LastName = Convert.ToString(row["Last Name"]);
        s.Address = Convert.ToString(row["Address"]);
        s.PhoneNumber = Convert.ToString(row["PhoneNumber"]);
        s.Location = Convert.ToString(row["Location"]);
        datatable.Add(s);
        dept = datatable;  
    }
    ViewBag.tabledata = dept;
    return View(dept) ;
}

Modèle

public class sample
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string PhoneNumber { get; set; }
    public string Location { get; set; }
    public string tabledata { get; set; }
}

public class Message
{
    public IEnumerable<sample> sampleList { get; set; }
    public string MessageText { get; set; }
    public string MessageFrom { get; set; }
}

Vue

@model examplemvc1.Models.sample

@foreach (var data in Model)
{
    <table><tr><td>@data.FirstName</td></tr></table>
}

Mise à JOUR
c'est ainsi que ma vue d'ensemble ressemble

@model List<examplemvc1.Models.sample>
@{
ViewBag.Title = "Registration Form";
}
<head>
<script type="text/javascript" src="../../Scripts/jquery-1.7.1.min.js"></script>
<link href="../../Style/sample.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/samplescript.js" type="text/javascript"></script>
</head>
<h2>
Registration Form </h2>
<body>
<table>
<tr>
<th>
First Name
</th>
</tr>
@foreach (var data in Model)
{
<tr><td>@data.FirstName</td></tr>
}
</table>
@using (Html.BeginForm())
{
<table id="table1">
<tr>
<td> 
@Html.Label("Enter FirstName", new { @class = "standard_label_style" })
</td>
<td>
@Html.TextBoxFor(a => a.FirstName, new { @class = "class1", title = "Enter FirstName", id = "NameBox", placeholder = "Enter name", onkeydown = "return TextField(event)" })
<span class="errorMessage"></span>
@if (!ViewData.ModelState.IsValid)
{       
<span class="field-validation-error">
@ViewData.ModelState["FirstName"].Errors[0].ErrorMessage</span>
}     
</td>
</tr>
<tr>
<td>
@Html.Label("Enter LastName", new { @class = "standard_label_style" })
</td>
<td>
@Html.TextBoxFor(a => a.LastName, new { @class = "class1", placeholder = "Enter name", id = "LastNameBox", title = "Enter Lastname", onkeydown = "return TextField(event); " })
<span class="errorMessage"></span>
</td>
</tr>
<tr>
<td>
@Html.Label("Enter Address", new { @class = "standard_label_style" })
</td>
<td>
@Html.TextBoxFor(a => a.Address, new { @class = "class1", id = "AddressBox", placeholder = "Enter name", title = "Enter Address" })
<span class="errorMessage"></span>
</td>
</tr>
<tr>
<td>
@Html.Label("Enter PhoneNumber", new { @class = "standard_label_style" })
</td>
<td>
@Html.TextBoxFor(a => a.PhoneNumber, new { @class = "class1", id = "PhoneBox", placeholder = "Enter name", title = "Enter Phonenumber", onkeydown = "return ValidateNumber(event);" })
<span class="errorMessage"></span>
</td>
</tr>
<tr>
<td>
@Html.Label("Enter Location", new { @class = "standard_label_style" })
</td><td>
@Html.TextBoxFor(a => a.Location, new { @class = "class1", id = "LocationBox", placeholder = "Enter name", title = "Enter Location" })
<span class="errorMessage"></span>
</td>
</tr>
</table>
<input type="button" id="btnSave"  value="Register"/>
<input type="button" value="Clear"/>
<input type="button" id="Tabledata" value="Tabledata"/>
<div id="div1"></div>
@*@Html.ValidationSummary()*@
<script type="text/javascript">
function ValidateNumber(e) {
var evt = (e) ? e : window.event;
var charCode = (evt.keyCode) ? evt.keyCode : evt.which;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
return true;
};
function TextField(e) {
var evt = (e) ? e : window.event;
var charCode = (evt.keyCode) ? evt.keyCode : evt.which;
if (charCode > 31 && (charCode < 48 || charCode > 56)) {
return true;
}
else if (charCode == 8 || charCode == 9) {
return true;
}
return false
};
</script>
}
</body>

L'erreur est de mon point de vue code, en fait, je ne sais pas comment obtenir les valeurs dans la page d'affichage. Je suis novice en mvc. Merci de m'aider à résoudre ce. Toute aide sera grandement appréciée.

"Mise à jour"

J'ai résolu Mon problème avec l'aide de Stackoverflow ci-Dessous est mon correctcode

Contrôleur

 public ActionResult data()
{
SomeViewModel model = new SomeViewModel();
dbconnection db = new dbconnection();
SqlConnection con = new SqlConnection(db.GetconString());
DataTable dt = db.BuildDT("select * from MVCsample");
foreach (DataRow row in dt.Rows)
{
sample s = new sample();
s.FirstName = Convert.ToString(row["First Name"]);
s.LastName = Convert.ToString(row["Last Name"]);
s.Address = Convert.ToString(row["Address"]);
s.PhoneNumber = Convert.ToString(row["PhoneNumber"]);
s.Location = Convert.ToString(row["Location"]);
model.samples.Add(s);
}
return View(model);
}

Modèle

namespace examplemvc1.Models
{
public class sample
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public string PhoneNumber { get; set; }
public string Location { get; set; }
public string tabledata { get; set; }
}
public class Message
{
public IEnumerable<sample> sampleList { get; set; }
public string MessageText { get; set; }
public string MessageFrom { get; set; }
}
public class SomeViewModel
{
public SomeViewModel()
{
samples = new List<sample>();
sample = new sample();
}
public List<sample> samples { get; set; }
public sample sample { get; set; }
}
}

vue

@model examplemvc1.Models.SomeViewModel

//................

@foreach (var data in Model.samples)
{
<tr><td>@data.FirstName</td>
<td>@data.LastName</td>
<td>@data.Address</td>
<td>@data.PhoneNumber</td>
<td>@data.Location</td></tr>
}
</table>

Il suffit de regarder Stephen Muecke la Réponse ci-dessous, il a expliquer le contexte très clairement

  • Avez-vous spécifié le modèle de la directive sur le début de page comme model List<namespace.sample>?
  • Montrez comment vous avez déclaré que le modèle de la vue. Mais vous avez plusieurs autres erreurs dans votre code (par exemple, chaque ligne ont des valeurs identiques)
  • comme le modèle examplemvc1.Modèles.l'échantillon comme thi
  • C'est mal de faire une liste<modèle> ou IEnumerable<Modèle>.
  • ok je vais essayer
  • Basé sur votre montage, vous avez besoin d'un modèle de vue avec une propriété pour la "nouvelle" sample et un bien pour la collection existante.
  • comment puis-je faire cela ?
  • Créer un modèle de vue, dire class SampleVM et ajouter public List<sample> SampleCollection { get; set; } public sample NewSample { get; set; } et passer à l'affichage, mais vous avez plusieurs autres erreurs dans votre code. Je vais ajouter une réponse détaillée plus tard.
  • merci de ta réponse, merci de me donner une mise à jour de réponse quand vous êtes libre, je peux attendre jusqu'à ce que, aussi je peux avoir un essai trop