我正在尝试使用 MudAutoComplete 在数据库中搜索项目,正在搜索名称中的匹配项,应该在选择框中显示名称,但现在正在获取“SarisApplication.Data.AssessmentType”,它是我的模型
我的AutoComplete是这样的,现在正在后端绑定整个对象类我能够获取id
<MudAutocomplete T="AssessmentType" Label="Search Assessment Type"
ResetValueOnEmptyText="true"
Placeholder="Type to search assessment"
AdornmentIcon="@Icons.Material.Filled.Search" AdornmentColor="Color.Primary"
@bind-Value="SelectedAssessmentType" SearchFunc="SearchAssessmentType"
ShowProgressIndicator="true">
</MudAutocomplete>
代码
public partial class AddAsessmentDialog
{
[CascadingParameter] MudDialogInstance? MudDialog { get; set; }
[Parameter] public long CourseId { get; set; }
public Assessment assessmentDetails = new();
public AssessmentType SelectedAssessmentType = new();
[Inject] public required AssessmentService AssessmentService { get; set; }
[Inject] public required AssessmentTypeService AssessmentTypeService { get; set; }
public bool IsVisible { get; set; }
private async Task<IEnumerable<AssessmentType>> SearchAssessmentType(string searchTerm)
{
var response = await AssessmentTypeService.SearchAssessmentType(searchTerm);
return response;
}
void Cancel() => MudDialog?.Cancel();
MudForm? form;
private async Task SubmitForm()
{
if (form != null)
{
await form.Validate();
if (!form.IsValid)
{
return;
}
else
{
if(CourseId > 0)
{
assessmentDetails.CourseId = CourseId;
assessmentDetails.AssessmentTypeId = SelectedAssessmentType.AssessmentTypeId;
assessmentDetails.IsVisible = IsVisible;
await AssessmentService.CreateAssessment(assessmentDetails);
}
}
}
else
{
/*sendinfo via message*/
}
MudDialog?.Close(DialogResult.Ok(true));
}
}
我尝试在 MudAutoComplete 中设置以下代码,该代码在搜索时显示描述,选择后它会返回到我的模型的命名空间
<ItemTemplate Context="assessment">
<MudText>
@assessment.AssessmentDescription
</MudText>
</ItemTemplate>
但我希望在选择时,它应该显示描述而不是命名空间,我知道为什么是命名空间,因为这就是我定义自动完成要保存的数据类型的方式,
我应该怎么做才能在搜索和选择时都显示描述值,但绑定所选的Id。
感谢您的帮助。
我已经找到解决办法了。在 MudAutoComplete 中呈现一个对象时,想要显示一个字符串?使用 ToStringFunc 参考这里
<MudAutocomplete T="AssessmentType" Label="Search Assessment Type"
ToStringFunc="@(e=> e==null?null : $"{e.AssessmentDescription}")"
ResetValueOnEmptyText="true"
Placeholder="Type to search assessment"
AdornmentIcon="@Icons.Material.Filled.Search" AdornmentColor="Color.Primary"
@bind-Value="assessmentDetails.AssessmentType" SearchFunc="SearchAssessmentType"
ShowProgressIndicator="true">
</MudAutocomplete>
问题就解决了