Как построить объекты модели с данными из базы данных?

Я хочу прочитать эти значения из базы данных и ввести их в textboxfor .

Как построить объекты модели Karta с данными из базы данных?

контроллер:

[HttpPost]
public async Task<ActionResult> PartialTabelaEcp()
{
    // for example:
    var numerMiesiaca = 1;
    var numerRoku = 2020;
    var userName = _httpContextAccessor.HttpContext.User.Identity.Name;

    // here I write to the start value database (the ones I want to load from the database)
    var dbExists = _ecpContext.Karta.FirstOrDefault(f => f.DzMiesiaca == 1 && f.Miesiac == numerMiesiaca && f.Rok == numerRoku && f.Login == userName);

    if (dbExists == null)
    {
           // I've done it, it works for me
    }

    if (dbExists != null)
    {
        var nrIdBase = _ecpContext.Karta.FirstOrDefault(f => f.DzMiesiaca == 1 && f.Miesiac == numerMiesiaca && f.Rok == numerRoku && f.Login == userName).Id;

        for (int i = 1; i <= liczbaDni; i++)
        {
            // here I want read this data
            // from database and send to textboxfor to partialview
        }
    }

    return PartialView("_TabelaEwidencja" );
}

Я создаю список, потому что в списке более 30 элементов

Модель:

public partial class Karta_Model
{
    [Key]
    public int Id { get; set; }
    public int? NrDay{ get; set; }
    public int? NrMonth { get; set; }
    public int? NrYear{ get; set; }
    public string? Rozpoczecie { get; set; } 
    public string? Zakonczenie{ get; set; } 
    public string? OdbiorGodzin{ get; set; } 
    ...
}

public partial class ParentView
{
    public List<Karta_Model> Model1 { get; set; }
}

Как мне прочитать значения перенести их в таблицу TextBoxFor. ?

Посмотреть:

@using AppEcp.Models
@model ParentView

@Html.TextBoxFor(m => m.Model1[nr_rows].Rozpoczecie, new { @class = "start", @type = "time" })
@Html.TextBoxFor(m => m.Model1[nr_rows].Zakonczenie, new { @class = "end", @type = "time" })
@Html.TextBoxFor(m => m.Model1[nr_rows].OdbiorGodzin, new { @class = "gethours", @type = "time" })

Всего 1 ответ


Это что-то вроде того, что вы хотите сделать?

[HttpPost]
public async Task<ActionResult> PartialTabelaEcp()
{
    // for example:
    var numerMiesiaca = 1;
    var numerRoku = 2020;
    var userName = _httpContextAccessor.HttpContext.User.Identity.Name;

    // you don't need to check for existing data and then get it in seperate calls to the db, just get a list at once and it will have 0+ elements.
    var karta = _ecpContext.Karta.Where(f => f.DzMiesiaca == 1 && f.Miesiac == numerMiesiaca && f.Rok == numerRoku && f.Login == userName).ToList();

    var kartaList = new List<Karta_Model>();
    if (karta.Any())
    {
        karta.ForEach(x => {
            kartaList.Add(new Karta_Model{
                //map properties here
            };
        });
    }

    //pass the list to the partial view
    return PartialView("_TabelaEwidencja", kartaList );
}

Измените модель вашего частичного на List () и переберите список следующим образом:

@foreach (var karta in Model) {
    @Html.TextBoxFor(m => karta.Rozpoczecie, new { @class = "start", @type = "time" })
    @Html.TextBoxFor(m => karta.Zakonczenie, new { @class = "end", @type = "time" })
    @Html.TextBoxFor(m => karta.OdbiorGodzin, new { @class = "gethours", @type = "time" })
}

Есть идеи?

10000