MVC Core Попытка заполнить строку таблицы, выбрав первый столбец - PullRequest
0 голосов
/ 20 ноября 2018

Я очень новичок в программировании, и я действительно запутался, как это сделать ..

Я пытаюсь сделать таблицу для создания предложения после выбора материалов, которые я хочу.Цена будет меняться, пока я выбираю разные материалы.В конце я сохраню предложение с общей стоимостью и т. Д.

У меня есть список моделей продуктов.И, на мой взгляд, я хотел бы выбрать нужную модель продукта в «Первом столбце», используя ее FullName, и я хочу заполнить другие столбцы в той же строке предопределенными деталями моделей, которые я только что выбрал.

Я сделал исследование, как это сделать.Jquery, Ajax были упомянуты, но мне придется добавить больше этих выпадающих списков с большим количеством Viewbags.Разве мне не нужно писать новый Ajax для каждого выпадающего списка?

Я действительно надеюсь, что буду руководствоваться, каким образом мне следует попытаться это сделать.

Заранее спасибо!

 public class Model:BaseEntity
{
    public TypeOfPart TypeOfPart { get; set; }
    public string BrandName { get; set; }
    public string ModelName { get; set; }
    public string VersionName { get; set; }
    public decimal? ListPriceTL { get; set; }
    public decimal? ListPriceForeign { get; set; }
    public ForeignCurrency? ForeignCurrency { get; set; }
    public decimal CurrentDiscount { get; set; } = 0.00M;

    public int? CertificateId { get; set; }
    public Certificate Certificate { get; set; }

    public string FullName => $"{BrandName} {ModelName} {VersionName}";

Мой контроллер

public IActionResult Create()
    {
        int amountOfElevators = Convert.ToInt32(TempData["Amount"]);
        ViewBag.amount = amountOfElevators;


        ViewData["Machines"] = new SelectList(_context.ModelRepo.GetAll()
            .Where(x => x.TypeOfPart 
==TypeOfPart.Machine),"Id","FullName");



        ViewData["ConstructionCompanyId"] = new 
SelectList(_context.ConstructionCompanyRepo.GetAll(), "Id", "Name","Id");
        ViewData["EmployeeId"] = new 
SelectList(_context.EmployeeRepo.GetAll(), "Id", "FullName");
        return View();
    }

Вот изображение для более подробного описания того, что мне нужно

РЕДАКТИРОВАТЬ: My View Model

public class InstallationOfferVM
{
    public InstallationOfferVM()
    {
        OfferedElevators = new List<OfferedElevator>();
        Models = new List<Model>();
    }
    public int Id { get; set; }
    [Display(Name = "Toplam ₺")]
    public decimal TotalPriceTL { get; set; }
    [Display(Name = "Toplam €")]
    public decimal TotalPriceEuro { get; set; }
    [Display(Name = "Açıklama")]
    public string Description { get; set; }
    [Display(Name = "Müşteri Firma")]
    public int ConstructionCompanyId { get; set; }
    [Display(Name = "Müşteri Firma")]
    public string CompanyName { get; set; }
    public ConstructionCompany ConstructionCompany { get; set; }
    [Display(Name = "Teklif Tarihi")]
    [DataType(DataType.Date)]
    public DateTime DateOfProposal { get; set; }
    [Display(Name = "Teklifi Veren")]
    public int EmployeeId { get; set; }
    [Display(Name = "Teklifi Veren")]
    public string EmployeeFullName { get; set; }
    public Employee Employee { get; set; }
    [Display(Name = "Teklif Durumu")]
    public ProposalStatus ProposalStatus { get; set; }
    [Display(Name = "İletme Şekli")]
    public DeliveredBy DeliveredBy { get; set; }
    [Display(Name = "Asansör Adedi")]
    public int AmountOfElevators { get; set; }


    public List<OfferedElevator> OfferedElevators { get; set; }
    public OfferedElevator OfferedElevator { get; set; }


    public int InstallationOfferId { get; set; }
    [Display(Name = "Kapasite")]
    public int Capacity { get; set; }
    [Display(Name = "Durak")]
    public int StopCount { get; set; }
    [Display(Name = "Halat Adedi")]
    public int MachineRopeCount { get; set; }
    [Display(Name = "Askı Tipi")]
    public int HangStyle { get; set; } = 1;
    [Display(Name = "Tahrik Tipi")]
    public DriveType DriveType { get; set; }
    [Display(Name = "Ortalama Kat Yüksekliği")]
    public decimal AvgFloorHeight { get; set; } = 3.00M;
    [Display(Name = "Giriş Adedi")]
    public int EntranceCount { get; set; } = 1;
    [Display(Name = "Ekstra Kapı")]
    public int AdditionalDoor { get; set; } = 1;
    [Display(Name = "Ağırlık Yanda İse")]
    public bool WeightInSide { get; set; }
    [Display(Name = "Kapı Yüksekliği 2100 ise")]
    public bool DoorHeightIs2100 { get; set; } = false;
    [Display(Name = "Euro Kuru")]
    public decimal CurrentEuro { get; set; }
    public List<Model> Models { get; set; }
    public Model Model { get; set; }
}

My View

@model Ace.ViewModels.InstallationOfferVM
@for (int i = 0; i < ViewBag.amount; i++)
{
<table class="table-sm table-striped table-dark col-md-9">
            <thead>
                <tr>
                    <th></th>
                    <th>Malzeme Cinsi</th>
                    <th>Adet</th>
                    <th>Liste Euro</th>
                    <th>Liste TL</th>
                    <th>İskonto</th>
                    <th>Toplam</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td></td>
                    <td><select asp-for="Model.Id" class="form-control" asp- 
items="ViewBag.Machines"></select></td>
                    <td>1</td>
                    <td></td>
                </tr>
            </tbody>
        </table>
    </div>
    <hr />
}
</form>
<div>
<a asp-action="Index">Back to List</a>
</div>

1 Ответ

0 голосов
/ 20 ноября 2018

Я бы предложил изменить ваш метод контроллера следующим образом:

public IActionResult Create()
{
    var offeredElevators = //query here to get the offeredElevators
    var viewmodel = new InstallationOfferVM 
    {
       OfferedElevators = offeredElevators,
       Models = new List<Model>()
    };

    return View(viewmodel);
}

таким образом вы можете по крайней мере получить ваши данные для просмотра, как это должно быть сделано.Я не уверен, если я согласен с вашей моделью / viewmodel, хотя ..

надеюсь, это поможет немного, по крайней мере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...