所以基本上我有一個看起來像這樣的視圖模型:我應該在控制器中使用正常的方法嗎?
public class KorisnikDugovanjaViewModel
{
public IEnumerable<Dug> Dugovanja { get; set; }
public IEnumerable<Korisnik> Korisnici { get; set; }
public Korisnik Korisnik { get; set; }
public decimal UkupnoDuznik { get; set; }
public decimal UkupnoVjerovnik { get; set; }
public IEnumerable<SumaPoDuzniku> SumePoDuzniku { get; set; }
public IEnumerable<SumaPoVjerovniku> SumePoVjerovniku { get; set; }
}
public class SumaPoDuzniku
{
public string Ime { get; set; }
public decimal Iznos { get; set; }
}
public class SumaPoVjerovniku
{
public string Ime { get; set; }
public decimal Iznos { get; set; }
}
我需要這種模式傳遞給我的看法在2種情況,索引頁上,當我張貼的索引頁,所以應該我在我的索引metod和我的http post index方法中填充模型,或者我應該製作一個看起來像這樣的方法,並在我需要傳遞模型時調用它?
public KorisnikDugovanjaViewModel VratiModel()
{
int userId = int.Parse(Session["User"].ToString());
KorisnikDugovanjaViewModel model = new KorisnikDugovanjaViewModel
{
Dugovanja = dugRepository.Dugovanja
.Where(m => (m.Duznik.Id == userId || m.Vjerovnik.Id == userId)),
Korisnici = korisnikRepository.Korisnici,
Korisnik = korisnikRepository.Korisnici.FirstOrDefault(m => m.Id == userId),
UkupnoDuznik = dugRepository.Dugovanja
.Where(m => m.DuznikId == userId && !m.Zatvoreno).Sum(m => m.Iznos),
UkupnoVjerovnik = dugRepository.Dugovanja
.Where(m => m.VjerovnikId == userId && !m.Zatvoreno).Sum(m => m.Iznos),
SumePoDuzniku = dugRepository.Dugovanja
.Where(a => a.DuznikId == userId && !a.Zatvoreno)
.GroupBy(a => a.Vjerovnik.Ime)
.Select(a => new SumaPoDuzniku
{
Ime = a.Key,
Iznos = a.Sum(b => b.Iznos)
}),
SumePoVjerovniku = dugRepository.Dugovanja
.Where(a => a.VjerovnikId == userId && !a.Zatvoreno)
.GroupBy(a => a.Duznik.Ime)
.Select(a => new SumaPoVjerovniku
{
Ime = a.Key,
Iznos = a.Sum(b => b.Iznos)
})
};
return model;
}
或者它通常以完全不同的方式完成?我只想學習如何有效地構建我的代碼。 另外我注意到,當我與表單POST,頁面刷新,VratiModel()
方法應該返回一個視圖填充新模型,但它不是,模型保持不變,直到我再次刷新頁面,這是正常的嗎?我應該使用模型狀態嗎?我無能爲力。
獎金問題:我如何處理會話?我應該檢查用戶是否在每種方法的開始時都登錄?它可以在構造函數中完成嗎?控制器的構造函數是如何工作的?您可能已經注意到,我在VratiModel()
方法的開頭使用了我的userId
,而在所有其他方法中,它看起來有點不好。
好吧,我完全忘了我應該聲明它是'私人'。這可能是竊聽我的。在模型的事情上,模型綁定的東西完美的作品,但情況是這樣的:我的視圖頁面顯示從我的數據庫表,我有一個窗體在視圖中,可以更新一些行,當我張貼表單數據庫已成功更新,但我的瀏覽頁面沒有反映出這種變化,除非我點擊'刷新'。此外,在銀河護衛隊中愛你:D –
確保你使用後期模型返回視圖*,即'返回視圖(模型);'。 –
我從問題中的方法返回視圖,如下所示:'返回視圖(VratiModel());'在post方法更新數據庫後。它應該生成一個新的視圖,但它不會,除非我通過刷新和不使用post來強制它。普通操作和後操作在最後都有相同的行,即:'返回View(VratiModel());'但後一種方式返回模型與我發佈之前的狀態。 –