Ich habe gerade angefangen MVC 4 zu machen und ich habe es ziemlich genossen, aber ich stehe in Schwierigkeiten, wenn ich es bin versuchen, meine Datenbank (nur NAME und EMAIL-Einträge) zu erhalten, um alle ihre Einträge in der Indexansicht anzuzeigen. Ich bekomme den folgenden Fehler:MVC - Wörterbuch benötigt ein Modell Item vom Typ 'System.Collections.Generic.IEnumerable`1
Ich konnte das Programm mit der Datenbank verbinden, aber ich bin hier ziemlich fest. Ich habe mich gefragt, ob ich Hilfe bekommen könnte. Hier ist mein Code:
Benutzerklasse
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace MobileWebFormver2.Models
{
public class User
{
[Required(ErrorMessage="Please enter name.")]
public string Name { get; set; }
[Required(ErrorMessage="Please enter email.")]
public string Email { get; set; }
}
}
Homecontroller (WebForm1 ist ein Datenbank-Eintrag, die einen Namen und E-Mail-Feld enthält)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MobileWebFormver2.Models;
using System.Data.Entity;
namespace MobileWebFormver2.Controllers
{
public class HomeController : Controller
{
DataClasses1DataContext db = new DataClasses1DataContext();
public ActionResult Index()
{
ViewBag.Message = "This is the TourEast Holidays Mobile Index";
return View(db.WebForm1s.ToList());
}
}
}
Index
@model IEnumerable<MobileWebFormver2.Models.User>
@{
ViewBag.Title = "Home Page";
}
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
</tr>
}
EDIT: Dies bezieht sich auf DataClasses1DataContext. Ich bin mir nicht sicher, wie nützlich das sein wird.
DataClasses1.cs
namespace MobileWebFormver2.Models
{
partial class DataClasses1DataContext
{
}
}
DataClasses1.designer.cs
#pragma warning disable 1591
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MobileWebFormver2.Models
{
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Data;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.Linq.Expressions;
using System.ComponentModel;
using System;
[global::System.Data.Linq.Mapping.DatabaseAttribute(Name="MobileWebForm")]
public partial class DataClasses1DataContext : System.Data.Linq.DataContext
{
private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
#region Extensibility Method Definitions
partial void OnCreated();
partial void InsertWebForm1(WebForm1 instance);
partial void UpdateWebForm1(WebForm1 instance);
partial void DeleteWebForm1(WebForm1 instance);
#endregion
public DataClasses1DataContext() :
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["MobileWebFormConnectionString"].ConnectionString, mappingSource)
{
OnCreated();
}
public DataClasses1DataContext(string connection) :
base(connection, mappingSource)
{
OnCreated();
}
public DataClasses1DataContext(System.Data.IDbConnection connection) :
base(connection, mappingSource)
{
OnCreated();
}
public DataClasses1DataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
base(connection, mappingSource)
{
OnCreated();
}
public DataClasses1DataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
base(connection, mappingSource)
{
OnCreated();
}
public System.Data.Linq.Table<WebForm1> WebForm1s
{
get
{
return this.GetTable<WebForm1>();
}
}
}
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.WebForm1")]
public partial class WebForm1 : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private string _Name;
private string _Email;
#region Extensibility Method Definitions
partial void OnLoaded();
partial void OnValidate(System.Data.Linq.ChangeAction action);
partial void OnCreated();
partial void OnNameChanging(string value);
partial void OnNameChanged();
partial void OnEmailChanging(string value);
partial void OnEmailChanged();
#endregion
public WebForm1()
{
OnCreated();
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(50) NOT NULL", CanBeNull=false, IsPrimaryKey=true)]
public string Name
{
get
{
return this._Name;
}
set
{
if ((this._Name != value))
{
this.OnNameChanging(value);
this.SendPropertyChanging();
this._Name = value;
this.SendPropertyChanged("Name");
this.OnNameChanged();
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Email", DbType="NVarChar(50) NOT NULL", CanBeNull=false)]
public string Email
{
get
{
return this._Email;
}
set
{
if ((this._Email != value))
{
this.OnEmailChanging(value);
this.SendPropertyChanging();
this._Email = value;
this.SendPropertyChanged("Email");
this.OnEmailChanged();
}
}
}
public event PropertyChangingEventHandler PropertyChanging;
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void SendPropertyChanging()
{
if ((this.PropertyChanging != null))
{
this.PropertyChanging(this, emptyChangingEventArgs);
}
}
protected virtual void SendPropertyChanged(String propertyName)
{
if ((this.PropertyChanged != null))
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
#pragma warning restore 1591'
schaute ich auf ähnliche Beiträge hier und ich weiß, dass es mit dem Führen eines Objekts zu tun hat, aber die Aussicht erwartet etwas anderes. Allerdings würde ich sagen, ich bin ein sehr Anfänger Level-Programmierer und ich glaube nicht, dass ich das meiste von dem verstand, was sie sagten. Ich habe im Grunde den Code von der MVC Tutorial-Seite (Link) von Microsoft auf, wie Sie Ihre Datenbank im Index zeigen, aber ich bekomme den Fehler. Jede Anleitung würde sehr geschätzt werden.
Können Sie Ihre Implementierung von DbContext zeigen? Sie benötigen ein DbSet, um abzufragen. –
Kannst du mir Anweisungen geben, wie man die Implementierung zeigt? Ich entschuldige mich, ich bin ein echter Anfänger, haha. Vielen Dank! –
Ok, ich ging zu meinen Modellen und es gibt eine DataClasses1.dbml. Ich habe mit der rechten Maustaste darauf geklickt und den View-Code angeklickt und jetzt bin ich in DataClasses1.cs. im Code alles, was es ist: namespace MobileWebFormver2.Models { partielle Klasse DataClasses1DataContext { } } @LeonCullens –