有许多类似的相关问题(和答案)(不区分大小写的字符串比较),但没有一个适用于 Razor C# 页面。
我正在使用 Visual Studio 2019 和 Blazor(Razor 页面和 C#)。浏览器是 Chrome 或 Edge(奇怪的是,它在 Internet Exploder 中运行良好......)
在我的剃须刀页面中,如果传递的 URL 参数与我的字符串数组中的项目匹配,我试图在 HTML 选择选项上设置“选定”选项。但是variable.Equals(param,StringComparison.OrdinalIgnoreCase)或String.Equals(param,variable,StringComparison.OrdinalIgnoreCase)失败,除非参数的大小写完全匹配。
我正在使用实体框架和 SQL Server 数据库获取我的字符串数组。但为了说明问题,我将其压缩为 1 个 Razor 页面(无 EF 和无数据库):
@page "/EqualsTest/{incomingParam}"
<h3>EqualsTest</h3>
<p>incomingParam = @incomingParam</p>
<!--display list on page to show lengths-->
@foreach (var p in myParams)
{
<p>'@p' = @p.Length</p>
}
<!--select list with passed param selected if it matches-->
<select @bind="@incomingParam">
@foreach (var p in myParams)
{
@if (incomingParam.Equals(p, StringComparison.OrdinalIgnoreCase))
{
<option selected value="@p">@p</option>
}
else
{
<option value="@p">@p</option>
}
}
</select>
@code {
[Parameter]
public string incomingParam { get; set; }
IEnumerable<string> myParams = new List<string>(){
"Hello",
"Whazzzup",
"Goodbye"
};
}
我尝试使用 String 类而不是字符串变量,但它的行为仍然相同。
我尝试使用临时字符串变量来查看是否有所作为,但仍然没有问题。
如果浏览器 URL 不完全匹配,则不会选择 select 选项。例如,这有效:
http://localhost:35333/EqualsTest/Hello
这不会:
http://localhost:35333/EqualsTest/hello
这是一个错误还是我做错了什么?