Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: MVC - dva modely v jednom Index.cshtml

Aktivity
Avatar
asoft
Člen
Avatar
asoft:8.12.2015 10:09

Dobrý deň.
Chcem Vás poprosiť o pomoc:
Mám dve tabuľky a dva modely:

Model1: ObjednavkaHlavna

namespace Project.Models
{
    [Table("ObjednavkyHlavna")]
    public class ObjednavkaHlavna
    {
        [Key]
        public string CisloObjednavky { get; set; }
        public System.DateTime DatumObjednavky { get; set; }
        public string VystavilMeno { get; set; }
    }
}

Model2: ObjednavkaRiadok

namespace Project.Models
{
    [Table("ObjednavkyRiadky")]
    public class ObjednavkaRiadok
    {
        [Key]
        public string CisloObjednavky { get; set; }
        public string CisloRiadku { get; set; }
        public string Text { get; set; }
      }
}

Controller:

{
    namespace Project.Controllers
    public class ObjednavkyController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }
}

Index.cshtml - takto nejako by som chcel, aby to vyzeralo:

@model Project.Models.ObjednavkaHlavna
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    @Html.AntiForgeryToken()

    @Html.LabelFor(model => model.CisloObjednavky)
    @Html.EditorFor(model => model.CisloObjednavky)

    @Html.LabelFor(model => model.DatumObjednavky)
    @Html.EditorFor(model => model.DatumObjednavky)


    @Html.LabelFor(model => model.CisloRiadku1)
    @Html.EditorFor(model => model.Text1)

    @Html.LabelFor(model => model.CisloRiadku2)
    @Html.EditorFor(model => model.Text2)

    @Html.LabelFor(model => model.CisloRiadku3)
    @Html.EditorFor(model => model.Text3)

ObjednavkaHlavna je jedna veta.
ObjednavkaRiadok sú max. 3 vety.
Kľúč je: CisloObjednavky

Otázka: Ako dostať do Index.cshtml 3 riadky z modelu ObjednavkaRiadok.
Ako spojiť dva modely do jedného Index.cshtml.
Moje úvahy:

1. Pridať do modelu: ObjednavkaHlavna

public virtual ObjednavkaRiadok Objednavka_Riadok { get; set; }

Teraz sa viem dostať v Index.cshtml k riadkom:
@Html.LabelFor(mo­del => model.Objednav­kaRiadok.Cislo­Riadku)
ale iba k jednému riadku.

2. Alebo musím v ObjednavkaHlavna pridať:

public string CisloRiadku1 { get; set; }
public string Text1 { get; set; }
public string CisloRiadku2 { get; set; }
public string Text2 { get; set; }
public string CisloRiadku3 { get; set; }
public string Text3 { get; set; }

3. Alebo vytvoriť tretí model, v ktorej spojím modely ObjednavkaHlavna a ObjednavkaRiadky

public string CisloObjednavky { get; set; }
public System.DateTime DatumObjednavky { get; set; }
public string VystavilMeno { get; set; }
public string CisloRiadku1 { get; set; }
public string Text1 { get; set; }
public string CisloRiadku2 { get; set; }
public string Text2 { get; set; }
public string CisloRiadku3 { get; set; }
public string Text3 { get; set; }

Alebo ? .....

 
Odpovědět
8.12.2015 10:09
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na asoft
vajkuba1234:8.12.2015 10:41

Pro tento ucel slouzi ViewModel. Z nekolika modelu pristoupis do jednoho view. Staci tak?

Nahoru Odpovědět
8.12.2015 10:41
No hope, no future, JUST WAR!
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na asoft
vajkuba1234:8.12.2015 11:15

Zkus se kouknout treba tady, ale na netu je toho dost. :)

http://sampathloku.blogspot.cz/2012/10/how-to-use-viewmodel-with-aspnet-mvc.html
Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět
8.12.2015 11:15
No hope, no future, JUST WAR!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.