{controller}/{action}/{id}
の代わりに、 {controller}/{action}/{id}/{another id}
のような複数のパラメータを設定することは可能ですか?MVC 4:複数コントローラのアクションパラメータ
私はMVCが初めてです(単純なWebページからのものです)。可能でない場合、MVCはWebページで利用可能なUrlData
のようなヘルパーメソッドを提供していますか?
{controller}/{action}/{id}
の代わりに、 {controller}/{action}/{id}/{another id}
のような複数のパラメータを設定することは可能ですか?MVC 4:複数コントローラのアクションパラメータ
私はMVCが初めてです(単純なWebページからのものです)。可能でない場合、MVCはWebページで利用可能なUrlData
のようなヘルパーメソッドを提供していますか?
あなたはこのように、あなたのglobal.asaxに新しいルートをマップする必要があります。
routes.MapRoute(
"NewRoute", // Route name
"{controller}/{action}/{id}/{another_id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional, another_id = UrlParameter.Optional } // Parameter defaults
);
は、その後、あなたのコントローラのアクションで、あなたはこのようにパラメータを拾うことができます。
public ActionResult MyAction(string id, string another_id)
{
// ...
}
はい、ルート内に複数のパラメータを定義できます。まず、Global.asaxファイルで経路を定義する必要があります。 URLセグメントまたはURLセグメントの一部にパラメータを定義できます。
public class MyController : Controller
{
public ActionResult Index(string id1, string id2)
{
//..
}
}
:あなたの例を使用するには、その後、ID1とID2のセグメントを抽出し、あなたのアクションメソッドに対応する変数に割り当てるルートをマッチング解析する
{controller}/{action}/{id1}/{id2}
MVCインフラとしてルートを定義することができます
また、クエリ文字列またはフォーム変数から入力パラメータを受け入れることもできます。たとえば:
MyController/Index/5?id2=10
ルーティングは、より詳細に議論されてhere
あなたのアクションメソッドのパラメータリストにその最初のIDを追加する必要があります:公共のActionResultのMyAction(文字列ID、文字列another_id)の両方のIDがで使用されるように、例の動作。 – Tommy
@Tommyありがとう、 – McGarnagle
私はIISエクスプレスとフルIIS 7でこれを試してきましたが、第2パラメータでエラー404.0を取得しました。私はhttp://www.asp.net/mvc/tutorials/older-versions/deployment/using-asp-net-mvc-with-different-versions-of-iis-csを読んでみましたが何も助けませんでした。助言がありますか? – DavidHyogo