このような関連する質問 (および回答) は多数ありますが (大文字と小文字を区別しない文字列比較)、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)は、パラメーターの大文字と小文字が正確に一致しない限り失敗します。
Entity Framework と 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 が正確に一致しない場合、選択オプションは選択されません。たとえば、これは機能します:
http://localhost:35333/EqualsTest/Hello
そして、これはしません:
http://localhost:35333/EqualsTest/hello
これはバグですか、それとも何か間違っていますか?