public ActionResult MojeTeme()
{
var db = new Palindrom.Models.Baza1Entities();
var db1 = new Palindrom.Models.Entities();
var db2 = new Palindrom.VjuModeli.ProfilKorisnika();
var naslovi = db.PalindromBaza.Select(m => new Palindrom.VjuModeli.TemeKorisnika { Korisnik = m.Korisnik, ID = m.ID, Naslov = m.Naslov });
foreach (var red in naslovi)
{
if (db2.teme != null)
db2.teme.Add(red);
}
return View(db2);
}
我无法理解为什么此代码不起作用。
我有两个模型,我需要其中的一些数据,我想将其放入单个视图模型中:
public class ProfilKorisnika
{
public DbSet<TemeKorisnika> teme { get; set; }
public DbSet<PKorisnika> profil { get; set; }
}
我只想关注其中一个 DbSet,因为我希望它只是复制和粘贴。
DbSet<TemeKorisnika>
在 db2.teme.Add(red)
线之前不应有任何数据。
我创建了一个变量
naslovi
来保存 DbSet<TemeKorisnika>
所需的三列,并且我想使用 foreach 循环来填充 db2.teme
。问题是,当我尝试加载视图时,我会看到一个 NullReferenceException
,并且调试器将我定向到这行代码:db2.teme.Add(red)
。
我确定
red
变量不为空,naslovi
变量也不为空。
通过一些研究,我被引导相信
db2.teme
没有初始化,作为初学者,我不完全确定我知道在这种情况下这意味着什么,如果它是已初始化的类 ProfilKorisnika
在 db2
对象中实例化,我是否遗漏了什么?
我已经围绕这种添加数据的方式旋转了一段时间,但没有尝试过任何与此不同的方法。
我将大部分代码更改为这样并且它有效:
var naslovi = db.PalindromBaza.Where(m => m.Korisnik == User.Identity.Name);
var ajdijevi = db.PalindromBaza.Where(m => m.Korisnik == User.Identity.Name);
var profil = db1.AspNetUsers.Select(m => new Palindrom.VjuModeli.PKorisnika {OpisPr = m.OpisProfila,NazivPrSl=m.NazivProfilneSlike ,Korisnik = m.UserName});
List<Palindrom.VjuModeli.VjuModZaProfil> profilov = new List<Palindrom.VjuModeli.VjuModZaProfil>();
int i = -1;
try {
ajdijevi.First();
foreach (var red in naslovi)
{
i++;
profilov.Add(new VjuModeli.VjuModZaProfil
{
ID = Convert.ToInt32(ajdijevi.ToArray()[i].ID),
Korisnik = profil.First(m => m.Korisnik == User.Identity.Name).Korisnik.ToString(),
Naslov = naslovi.ToArray()[i].Naslov.ToString(),
OpisPr = profil.FirstOrDefault(m => m.Korisnik == User.Identity.Name).OpisPr.ToString(),
NazivPrSl = "img.png"
}
);
}
}
catch {
profilov.Add(new VjuModeli.VjuModZaProfil
{
Naslov = "nslv",
ID = 0,
Korisnik = profil.First(m => m.Korisnik == User.Identity.Name).Korisnik.ToString(),
OpisPr = profil.FirstOrDefault(m => m.Korisnik == User.Identity.Name).OpisPr.ToString(),
NazivPrSl = "img.png"
}
);
}
return View(profilov);
我还将 ViewModel 修改为:
public class VjuModZaProfil
{
public int ID { get; set; }
public string Korisnik { get; set; }
public string Naslov { get; set; }
public string OpisPr { get; set; }
public string NazivPrSl { get; set; }
}
希望这对某人有帮助,如果有人对这段代码有任何无意义的地方,我想澄清它。