#c# #asp.net #razor #blazor
Вопрос:
Поэтому у меня возникли проблемы с тем, чтобы моя страница Razor обновила заявление if.
Идея заключается в том, что когда пользователь нажимает кнопку, он пересчитывает строку в поисках количества значений X, прямо сейчас мы ищем пробелы. Если есть один пробел, я хочу, чтобы поле ввода было заблокировано (у пользователя нет причин редактировать его). Если там больше одного места, оно не заперто.
Ниже приведен оператор if, содержащий теги
@if (NumOfSelectedValue <= 1) { <input class="form-control-sm" value="1" style="width: 40px" disabled /> } else if (NumOfSelectedValue > 1) { <input class="form-control-sm" value="@NumOfSelectedValue" style="width: 40px" /> }
И вот логика того, как я думал, что он будет обновлен.
public void SpaceSelected() //ive used "async task" { int NumOfSelectedValue = SelectedCell.Count(x => x == ' ');//counting how many spaces there are with Linq Console.WriteLine(NumOfSelectedValue);//post num of spaces in the console //other versions ive used //StateHasChanged();//update the if statement //await InvokeAsync(StateHasChanged); InvokeAsync(StateHasChanged); }
Комментарии:
1. Ваш код razor проверяет
NumOfSelectedValue
, что, по-видимому, является полем, которое у вас есть, или является ошибкой во время компиляции. Локальная переменнаяNumOfSelectedValue
, в которой вы определяете,SpaceSelected
не представляет одно и то же и фактически не выполняет ничего, что могло бы повлиять на код razor.2. ах, я этого не показывал, но над вторым фрагментом кода у меня есть общедоступная строка NumOfSelectedValue { get; set; }
3. Да, это ошибка C# — удалить
int
префикс изNumOfSelectedValue
вашего метода.
Ответ №1:
Согласно вашим комментариям, у вас есть публичное свойство с именем NumOfSelectedValue
. Это отдельно от локальной переменной NumOfSelectedValue
, в которой вы определили SpaceSelected
. Ваше решение состоит в том, чтобы не объявлять эту локальную переменную, а вместо этого просто обновить свойство:
public void SpaceSelected() { NumOfSelectedValue = SelectedCell.Count(x => x == ' '); StateHasChanged(); // Probably not necessary unless you're calling this method in the background }
Обратите внимание, что у нас больше нет int
части перед назначением, которая объявляла переменную.
Комментарии:
1. Я бы поддержал тебя, но я недостаточно крут.
2. @Нука, рад, что смог помочь. 🙂