Страница не отображается, но нет сообщения об ошибке - PullRequest
0 голосов
/ 21 декабря 2018

VS 2017, сборка 15.9.3, Blazor runtime 0.7 rtmПопробую мою руку в Blazor.У меня есть простая страница, которую я пытаюсь получить в раскрывающемся меню, чтобы заполнить элементы из списка объектов.Проект строится, но страница не отображает ни сгенерированных ошибок, ни исключений.Другие страницы работают нормально, только не эта.Это, очевидно, что-то с select, так как, если я удаляю это, он будет хорошо.Однако я не вижу ошибок - ни в браузере, ни в визуальной студии.Я запускаю из VS с F5, поэтому я могу отлаживать при необходимости.

@page "/PriceList"


<p>Audit screen test</p>

<select id="selPriceRate" bind="@prices">
    <option value="test">test</option>
</select>

<br/>
Select terminal:<br/>
<select id="ddTerminal" onchange="@ChangeTerminal" >
    <option value="NYC">NYC</option>
    <option value="LHR">LHR</option>
    <option value="DFW">DFW</option>
    <option value="LAX">LAX</option>
</select>

@functions {

    List<PriceSetting> prices = new List<PriceSetting>();

    void ChangeTerminal()
    {
        // load ddRateMaster
        prices.Add(new PriceSetting() { PriceName = "test1",PriceValue = 104.13m });
        prices.Add(new PriceSetting() { PriceName = "test2", PriceValue = 105.13m });
        prices.Add(new PriceSetting() { PriceName = "test3", PriceValue = 106.13m });
    }

    protected override async Task OnInitAsync()
    {
        var t = prices.Count();

        await Task.Delay(1000);

    }

}

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Этот ответ основан на предположении, что вы хотите создать два элемента select;один для отображения списка аэропортов, а второй список цен.(Это лучшее, что я могу сделать из вашего вопроса) Теперь, когда пользователь выбирает аэропорт, вы хотите, чтобы второй выбрал список цен, верно?

@if (Terminals == null)
{
    <p><em>Loading...</em></p>
}
else
{
    <select bind="@SelectedTerminalId">
        <option value=@(0)></option>
        @foreach (var Terminal in Terminals)
        {
            <option value="@Terminal.TerminalId">@Terminal.Name</option>
        }
    </select>
}

@if (SelectedTerminalId != default)
{
    var prices = Terminal.Single(x => x.TerminalId == SelectedTerminalId).Prices;

    <select bind="@SelectedPriceSettingId">
        <option value=@(0)></option>
        @foreach (var price in Prices)
        {
            <option value="@price.Id">@price.Name (@price.Value)</option>
        }
    </select>

}

@functions {
    private static readonly List<Terminal> Terminals = new List<Terminal>{
            new Terminal{
                TerminalId = 1, Name = "NYC", Prices = new List<PriceSetting>
                {
                    new PriceSetting{Id = 1, Name = "test1", Value = 104.13m},
                    new PriceSetting{Id = 2, Name = "test2", Value = 105.13m )
                }
            },
            new Terminal{
                TerminalId = 2, Name = "LHR", Prices = new List<PriceSetting>
                {
                    new PriceSetting{Id = 3, Name = "test3", Value = 106.13m}

                }
            }
        };


    int _selectedTerminalId;
    int SelectedTerminalId
    {
        get => _selectedTerminalId;
        set
        {
            _selectedTerminalId = value;
            SelectedPriceSettingId = default;
        }
    }

    int SelectedPriceSettingId { get; set; }


}   
0 голосов
/ 21 декабря 2018

Вы только что пытались связать прайс-лист

List<PriceSetting> prices = new List<PriceSetting>();

, чтобы выбрать значение элемента.

<select id="selPriceRate" bind="@prices">
<option value="test">test</option>
</select>

Это неверно.Вы можете попробовать что-то вроде этого

<select id="selPriceRate" bind="@selectedPriceName">
@foreach(var price in prices) {
    <option value="@price.PriceName">@price.PriceName</option>
}    
</select>

или

<select id="selPriceRate" onchange="@ChangePriceRate">
@foreach(var price in prices) {
    <option value="@price.PriceName">@price.PriceName</option>
}    
</select>

Примечание: вы не можете использовать bind и onchange для одного элемента @ bind и @onchange для одного и того же элементане работает

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