1

私は MVC スタイルのページにはまったく慣れていませんが、ゆっくりと学習しています。データベースから何かを取得するために使用するコントローラーにパラメーターを渡すアクションリンクをクリックできるようにしたいのですが、さまざまなことを試しましたが、コントローラーにはパラメーターとして null しか与えられません.

私の見解では、次のようにアクション リンクを作成しました。

@Html.ActionLink(Model.Name, "GetMeeting", "ChooseMeeting", null, new {meetingid = Model.MeetingId})

そして、このリクエストを処理するコントローラーは次のとおりです。

public ActionResult GetMeeting(string meetingid)
    {
        var races = RaceRepository.GetRacesInMeeting(new Meeting() {MeetingId = new Guid(meetingid)});
        return View(races);
    }

meetingID は常に null です。誰かがこれを手伝ってくれて、必要なパラメーターを与える方法を教えてください。また、確認したところ、ビューで Model.MeetingID に必要な ID が入力されています。

助けていただければ幸いです、ライアンに感謝します

4

3 に答える 3

2

すぐに、null が間違った場所にある可能性があると思います。Model.name が単なるテキスト、「GetMeeting」がアクション名、「ChooseMeeting」がコントローラー名であると仮定すると、次のようにしてみてください

@Html.ActionLink(Model.Name, "GetMeeting", "ChooseMeeting", new {meetingid = Model.MeetingId}, null)

そして、あなたの行動は次のようになります

public class ChooseMeeting : Controller
{
    public ActionResult GetMeeting(int meetingid)
    {
        // ...
        return View();
    }
}
于 2013-03-23T01:29:59.647 に答える
0

認識されるパラメーターとして meetingId を渡すルートを定義していない可能性が非常に高くなります。

ActionLink が次のように解決されることを意図しています (3 は meetingId の値です)。

/ChooseMeeting/GetMeeting/3

実際にルーティングされているのは、おそらく次のとおりです。

/ChooseMeeting/GetMeeting

これは、単一のデフォルト MVC ルートが次のように定義されているためです。

  routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Request", action = "Index", id = UrlParameter.Optional } 
  );

ここでの問題は、パラメーターの名前がデフォルトで「id」になっていることです。ここで、パラメーターに meetingId という名前を付けました。

これを解決するには、少なくとも 3 つの方法があります。

  1. id既存のルートが必要に応じてパラメーターをマップするように、パラメーターの名前を に変更します。
  2. MVC ルートが渡された値を という名前の変数にマップできるようにするルートを追加しますmeetingId
  3. 次のようなクエリ文字列スタイルの引数としてパラメーターを渡します/ChooseMeeting/GetMeeting/?meetingId=3
于 2013-03-23T01:32:01.297 に答える
0

ああ!私はそれを解決しましたが、問題は、ActionLink の間違ったオーバーロードを呼び出していたことです。次のようになっているはずです。

@Html.ActionLink(Model.Name, "GetMeeting", "ChooseMeeting",new {meetingid = Model.MeetingId},null)

時間の無駄でごめんなさい。

乾杯、ライアン

于 2013-03-23T01:32:28.157 に答える