如何从下拉列表中获取所选项目



我正在编写一个Blazor应用程序,我的Razor文件有一个Zip Codes下拉列表。(从CSV文件填充(

有些城市有相同的邮政编码。

Zip, City
00000, CityA
00000, CityB

当我选择一个城市时,这是我的代码

private void SetModel(string zipCode)
{
var places = places.FirstOrDefault(p => p.ZipCode == zipCode);
_model.City = place.City;
_model.State = place.State;
_model.ZipCode = place.ZipCode;
}

我知道FirstOrDefault总是会得到第一个项目,但我不知道我应该修改什么代码,所以我得到了用户选择的项目

我的Razor文件中的代码

<RadzenDropDown Id="locations" AllowFiltering="true" LoadData="@ChangedLocation" Data="@places" TextProperty="Key" ValueProperty="ZipCode" Change="o => SetModel(o.ToString())" />

首先,我假设您至少有一个zip模型:

public class Zip
{
public string ZipCode { get; set; }
}

使用Radzen组件,这应该在你的剃须刀组件标记部分做到这一点:

<RadzenDropDown TValue="string" AllowClear="true" AllowFiltering="true" FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive" Data="@_zipList" 
TextProperty="ZipCode" ValueProperty="ZipCode" Change=@(args => OnChange(args)) />

最后是组件的代码部分:

List<Zip> _zipList;
List<Place> _places;
SomeModel _model;
protected override void OnInitialized()
{
_zipList = SomeZipService.GetAll();
_places = SomePlaceService.GetAll();
}
private void OnChange(object args)
{
var place = places.FirstOrDefault(p => p.ZipCode == args.ToString());
_model.City = place.City;
_model.State = place.State;
_model.ZipCode = place.ZipCode;
}

或者,您可以使用bind-Value参数将其绑定到一个参数,而不将任何内容传递给OnChange方法。

我不确定您使用的是什么组件(RazdenDropDown?应该是Radzen?(。但是使用Blazor InputSelect组件,您可以按照以下方式进行操作:

<InputSelect @bind-Value="City"> //value will be returned in City variable.
@foreach (var item in ZipCodes)
{
<option value="@item.zipcode">@item.City</option>
}
</InputSelect>

在你的代码中:

string City;
//you could intialize City as well when the component is first rendered.
var x = City; //city will contain the zipcode

请注意,在Blazor中从InputSelect获取值似乎很简单。该值在绑定变量中返回,在本例中为City。因此,当用户选择一个新的邮政编码时,它会在变量City中返回。因此,当您保存数据时,只需使用当前在City中的值,这正是您所需要的。

如果你使用的是Radzen的下拉列表,他们的文档应该向你展示如何获得返回值。

相关内容

  • 没有找到相关文章

最新更新