0

次のように、文字列と int 値を同時に含むリストを作成したいと思います。

@Html.ActionLink("Back to List", "IndexEvent", new { location = "location" })

@Html.ActionLink("Back to List", "IndexEvent", new { locationID = 1 })

うまくいきませんでした。MVC コントローラーはパラメーターの型の違いを取得していないと思います。そのため、「IndexEvenyByID」として新しいアクションを作成する必要がありましたが、新しいビューが必要です。シンプルにしたかったので、異なるパラメータに関して同じビューを使用する方法はありますか?

4

3 に答える 3

1

次のように、2 つのオプション パラメータをIndexEventアクションに追加してみてください。

public ActionResult IndexEvent(string location = "", int? locationID = null)
于 2012-08-07T19:47:36.173 に答える
1

これには、新しいビューまたはビュー モデルは必要ありません。説明したように 2 つのアクションが必要ですが、コードは次のようになります。

コントローラ

public ActionResult GetEvents(string location){
    var model = service.GetEventsByLocation(location);
    return View("Events", model);
}

public ActionResult GetEventsById(int id){
    var model = service.GetEventsById(id);
    return View("Events", model);
}

サービス

public MyViewModel GetEventsByLocation(string location){
    //do stuff to populate a view model of type MyViewModel using a string
}

public MyViewModel GetEventsById(int id){
   //do stuff to populate a view model of type MyViewModel using an id
}

基本的に、ビューが同じビュー モデルを使用する予定で、そのデータを取得する方法だけが変更されている場合、ビューを完全に再利用できます。

于 2012-08-07T19:49:33.020 に答える