【解決方法】 AmbiguousmatchException: リクエストは複数のエンドポイントと一致しました。 一致:

プログラミングQA


ASP.NET の学習が進んでいることがとても気に入っています。 昨日、ASP プロジェクトに 2 つのフォルダーが必要であることを学びました。1 つ (Pages) には ASP Razor ページが含まれ、もう 1 つ (wwwroot) には Razor ページのスタイル ファイルが含まれています。 また、ユーザーに表示されるページの動作全体が、スタートアップ C# コード ファイル内のコード ビハインド ファイルによって制御されることも学びました。たとえば、次の行を確認するまでブートストラップやカスタム CSS スタイルを使用できないことです。

C#
app.UseStaticFiles();

ここで、モーダル内にフィールド名と説明を入力したブートストラップ フォームを作成し、フォームのポスト アクションが呼び出されたときにモデル ファイルがこれらの値を受け取ることができるように、ASP 識別子を与えました。 Models フォルダーを作成し、IndexModel という新しいクラス ファイルを追加して、名前とクエリに対してそれぞれ Name と description という 2 つのゲッターとセッターを宣言しました。 以下のコード ブロック セクションで、関連するすべてのファイルの定義を確認してください。

私が試したこと:

これは私の IndexModel.cs ファイルです

C#
public class IndexModel
  {
      public string Name { get; set; }
      public string Description { get; set; }
      //receive the values entered by the user through the onpost method
      public void OnPost()
      {
          Name = Name;
          Description = Description;

      }
  }

これがフォームです

HTML
<form onsubmit="return false;" action="post" id="form">
 <div class="form-group">
   <label for="name">Name</label>
     <input type="text" class="form-control" id="name" placeholder="Enter your name" asp-for="Name">
      </div>
      <div class="form-group">
  <label for="query">Query</label>
 <textarea class="form-control" id="query" style="margin-top:20px" rows="5" placeholder="Enter your query" asp-for="Description"></textarea>
                            </div>
     
</form>

この行を呼び出そうとしたときに、JavaScript ファイルでユーザー入力を処理しました

JavaScript
//means everything is okay, now pass the values entered to the ASP models
form. Submit();

エラーが発生します

AmbiguousMatchException: The request matched multiple endpoints. Matches:

このエラーは何ですか?どうすれば解決できますか?

解決策 1

通常、これは、同じ POST シグネチャ、つまり同じパラメータを持つルートが複数あることを意味します。

また、あなたの Form プロパティが正しくありません。 参照する: ASP.NET Core のフォームのタグ ヘルパー | Microsoft Learn[^]。 提供されたリンクのサンプルによると、ページを検査すると次のようになります。

HTML
<form method="post" action="/Demo/Register">
    <!-- Input and Submit elements -->
    <input name="__RequestVerificationToken" type="hidden" value="<removed for brevity>">
</form>

コメント

タイトルとURLをコピーしました