1 回答

TA貢獻2019條經驗 獲得超9個贊
注意:在元素中選擇某些文本后,將觸發 onselect 事件。它與選擇元素或選項選擇無關...據我記得,InputSelect 有一些問題,但 Blazor 團隊可能已經解決了這些問題。
以下代碼片段描述了如何在 Blazor 中使用 select 元素,以及如何實現雙向數據綁定;即從變量到元素,以及從元素到變量。您可以通過多種方式做到這一點:根據大師史蒂夫·安德森的說法,我的代碼采用了最有效的方式來實現這一目標。
下面的代碼片段使用雙向數據綁定將 SelectedAuthorID 變量綁定到 select 元素。
<select @bind="@SelectedAuthorID">
<option value=@(0)></option>
@foreach (var author in authors)
{
<option value="@author.ID">@author.Name</option>
}
</select>
注意:SelectedAuthorID 是一個定義支持私有變量的屬性:
int _selectedAuthorID;
private int SelectedAuthorID
{
get => _selectedAuthorID;
set
{
if (_selectedAuthorID != value)
{
_selectedAuthorID = value;
}
}
}
嗯,這段代碼是非常不言自明的,但是如果您不完全理解我所做的事情,請隨時詢問。
上面 foreach 循環中的authors 對象是您可以按如下方式創建的作者列表:
@code {
List<Author> authors= Enumerable.Range(1, 10).Select(i => new Author { ID
= i, Name = $"Author {i.ToString()}" }).ToList();
public class Author
{
public int ID { get; set; }
public string Name { get; set; }
}
}
現在,讓我們嘗試在 value="@availableLayouts.GetValue(1)"表達式之后對我的選項進行建模。該表達式被計算為字符串文字,對吧?當用戶選擇此選項時,將調用 OnSelectStock 來執行某些操作。
假設我們要調用 OnSelectStock 方法,并在選擇作者時將作者 id 傳遞給它,而他的 id 是偶數。因此我們可以這樣做:
if (_selectedAuthorID != value)
{
_selectedAuthorID = value;
if(value % 2 == 0)
{
OnSelectStock( value );
}
}
就是這個。
希望這可以幫助...
完整的工作代碼:
索引剃刀
@page "/"
<select @bind="@SelectedAuthorID">
<option value=@(0)></option>
@foreach (var author in authors)
{
<option value="@author.ID">@author.Name</option>
}
</select>
<p>Selected Author ID: @authorID</p>
@code{
string authorID;
int _selectedAuthorID;
private int SelectedAuthorID
{
get => _selectedAuthorID;
set
{
if (_selectedAuthorID != value)
{
_selectedAuthorID = value;
// Call OnSelectStock only if the author ID is an even number
if (value % 2 == 0)
{
OnSelectStock(value);
}
}
}
}
List<Author> authors = Enumerable.Range(1, 10).Select(i => new Author
{ ID = i, Name = $"Author {i.ToString()}" }).ToList();
private void OnSelectStock(int value)
{
authorID = value.ToString();
}
public class Author
{
public int ID { get; set; }
public string Name { get; set; }
}
}
- 1 回答
- 0 關注
- 111 瀏覽
添加回答
舉報