Mvc'de biraz yeni ve neyi özlediğimi anlamadım. Giriş'i başlattığımda, foreach görünümünde (Modelde var öğesi) < - Model null alır ve System.NullReferenceException ile durur. Bir neden gerçekten bir ipucu yoktur ve umarım birileri aşağıdaki kodda neyin yanlış olduğuna dair bir tavsiyede bulunabilir ya da hatayı aramaya başlayabilirler.System.NullReferenceException görüntüde yineleme yapmaya çalışırken
modeli:
public class LoginModels
{
public string UserLogin { get; set; }
public string Address { get; set; }
public string Password { get; set; }
public List<string> emailSubject { get; set; }
}
kontrolör:
public ActionResult Login(string address, string password, LoginModels model)
{
using (Imap imap = new Imap())
{
try
{
imap.ConnectSSL("imap.gmail.com");
imap.Login(address, password);
imap.SelectInbox();
List<long> uids = imap.Search(Flag.All);
model.emailSubject = new List<string>();
foreach (long uid in uids)
{
var eml = imap.GetMessageByUID(uid);
IMail email = new MailBuilder().CreateFromEml(eml);
model.emailSubject.Add(email.Subject);
}
Session["user"] = new LoginModels() { UserLogin = address, Address = address };
return RedirectToAction("Index", "Home", model.emailSubject);
}
catch (Exception e)
{
ViewBag.exceptionMessage = e;
return View("LoginFailed");
}
}
görünüm:
@using TheOnlineArchivator.Models;
@model List<TheOnlineArchivator.Models.LoginModels>
@{
ViewBag.Title = "Home";
}
@{
var user = Session["user"] as LoginModels;
if (user != null)
{
<h2>You are logged on as @user.Address</h2>
<table>
@foreach (var item in Model)
{
foreach (var elem in item.emailSubject)
{
<tr>
<td>@elem</td>
</tr>
}
}
</table>
}
}