Browse.chtml
と呼ばれるビューがあります。ユーザーは検索語を入力したり、検索語を空白のままにしたりできます。検索語を入力するときには、ページをhttp://localhost:62019/Gallery/Browse/{Searchterm}
に送りたいと思います。何も入力しなかった場合は、ブラウザをhttp://localhost:62019/Gallery/Browse/Start/Here
にします。ルーティング:現在のアクション要求[...]は、次のアクションメソッド間であいまいです
私はこれをしようとすると、私はエラーを取得する:私はMVCでやっている
The current request for action 'Browse' on controller type 'GalleryController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult Browse(System.String) on type AutoApp_MVC.Controllers.GalleryController System.Web.Mvc.ActionResult Browse(Int32, System.String) on type AutoApp_MVC.Controllers.GalleryController
すべてが初めてです。私はこの時点で他に何を試していいのか分かりません。
public ActionResult Browse(string id)
{
var summaries = /* search using id as search term */
return View(summaries);
}
public ActionResult Browse(string name1, string name2)
{
var summaries = /* default list when nothing entered */
return View(summaries);
}
私はまた、Global.asax.csでこれを持っている:
routes.MapRoute(
"StartBrowse",
"Gallery/Browse/{s1}/{s2}",
new
{
controller = "Gallery",
action = "Browse",
s1 = UrlParameter.Optional,
s2 = UrlParameter.Optional
});
routes.MapRoute(
"ActualBrowse",
"Gallery/Browse/{searchterm}",
new
{
controller = "Gallery",
action = "Browse",
searchterm=UrlParameter.Optional
});
上記の例で新しいビューを作成する必要がありますか? ActionNameタグの使用には役立たないようですが、これはすべてのアクションメソッドの名前を変更するだけです(両方を同時に保持できないと思うので)。 MVCの仕組みを知ることは良いことです。ありがとう。 – Dave
いいえ、新しいビューを作成する必要はありません。両方の操作で同じビューを再利用することはできます。 'return view(" Browse "、要約)の最初の引数としてビュー名を渡してください; – danludwig
素晴らしい、ありがとう。 – Dave