Область видимости и типы переменных на страницах Razor (исправлено) - PullRequest
0 голосов
/ 01 мая 2020

Еще один вопрос для начинающих. Я получил значение из раскрывающегося списка с помощью функции JavaScript и пытаюсь использовать его на своей странице. Однако, мое возвращаемое значение (LocationID) - неправильный тип данных, и код не будет компилироваться. (Когда я попробовал строку «if» ниже как if (p c .LocationID = Model.BookingSL.SelectedValue) Я получил сообщение об этом. Я попытался выполнить тип-трансляцию, чтобы поставить число в строке, но, кажется, ничего не работает.

Следующее дает «Имя LocSelected не существует в текущем контексте», независимо от того, префикс я или нет LocSelected с @. Я не понимаю что происходит с областью действия переменной, поскольку все, что я прочитал, говорит мне, что свойство publi c должно быть доступно в другом месте в моей модели страницы / страницы.

Я снова пропустил что-то очевидное? Как я могу сравнить значение из моего списка выбора со значением поля из моего другого объекта текущей таблицы (PCList)? (Является ли Selectlist.SelectedValue даже правильным свойством SelectList для получения единственного выбранного значения?)

В Home.cs html .cs

namespace Bookit.Pages
{
    public class HomeModel : PageModel
    {
        ..
        [BindProperty (SupportsGet= true)] public string LocSelected {get; set; }

В Home.cs html

    {
       LocSelected = pc.LocationID.ToString();  
       if (LocSelected == Model.BookingSL.SelectedValue.ToString())
       { // filter the following data shown

Буду благодарен за любые подсказки. Спасибо.

1 Ответ

0 голосов
/ 02 мая 2020

Думаю, вы зациклены на том, как модель привязывается к странице. Внутри вашего блока @ {} на странице Home.cs html у вас должно быть доступно свойство с именем Model (в верхнем регистре), а свойство TH должно иметь свойство LocSelected, по крайней мере, как я прочитал ваш код.

Затем для сравнения, чтобы отфильтровать данные, для стандартных страниц Razor вам нужно либо обработать их с помощью JS или JQuery на странице, либо настроить запрос GET обратно на сервер с помощью значение поиска с ответом, в котором есть ваш обновленный список. AJAX с конечными точками API - еще одна хорошая альтернатива, и вы можете включить компоненты Razor (Blazor), которые позволят обеспечить более богатое взаимодействие на стороне клиента без Javascript, и могут использоваться в приложениях RazorPages.

В зависимости от вашего уровня комфорта с помощью JS и JQuery и связанных с ними манипуляций с DOM, это может быть ваш билет. Используйте метод GET, чтобы получить исходный код, используйте технику на стороне клиента, чтобы сделать то, что вам нужно, а затем ЗАПИШИТЕ его обратно, когда вы закончите, следовательно, меньше посещений сервера.

...