0

私はasp.net mvc3にかなり慣れていないので、これを理解するのに苦労しています。パラメータを含めてインデックスメソッドに渡したいアクションリンクがあります

@Html.ActionLink("Click here", "Index", "Customer", new { customerid = item.custId}, new {       @class = "partiallink" })

コントローラからどのように受け取るのですか? Index Action メソッドにメソッド パラメータがなく、ビューにパラメータを出力するにはどうすればよいですか?

私が言おうとしているのは、それをいくつかのコントローラーメソッドに渡し、それでもパラメーターを含むインデックスページを返すことだと思います

4

3 に答える 3

1

アクション リンクに渡すすべてのパラメーターは、クエリ文字列パラメーターになります。

@Html.ActionLink("Click here", "Index", "Customer", new { customerid = 111, someOtherParameter = 222, anotherParameter = 333}

リンク /Customer/Index?customerid=111&someOtherParameter=222&anotherParameter=333 に転送します。Index アクションのシグネチャが次の場合は、プロパティを介してコントローラーで取得するRequest.QueryStringか、モデル バインダーを介してマップできます。

ActionResult Index(int? customerid, int? someOtherParameter, string anotherParameter)
{
    .....
}
于 2012-09-07T18:30:57.460 に答える
0

Customer コントローラーで、Index ページを返す Index アクションに値を渡さないか、customerid を渡せるようにしたいということですか?

デフォルト ルートを変更していないと仮定すると、コントローラー アクションを変更して null 許容の int を受け入れ、customerid が null であるかどうかに基づいてモデルを取得できます。

    public ActionResult Index(int? customerid)
    {
        YourModelType model;
        if (customerid == null)
        {
            model = /* however you get your model when you don't have an id */
        }
        else
        {
            model = /* however you get your model when you have an id */;
        }

        return View("Index", model);
    }

オプションの customerid パラメータを受け入れるように、ルーティング エンジンを更新する必要もあります。

        routes.MapRoute(
            "Customer", // Route name
            "Customer/{action}/{customerid}", // URL with parameters
            new { controller = "Customer", action = "Index", customerid = UrlParameter.Optional } // Parameter defaults
        );
于 2012-09-07T18:27:23.050 に答える
0

以下の例のように使用できます

@Html.ActionLink("Click here", "Index", "Customer", new { ID= 111,UID =222}, null)

そしてコントローラーで

[HttpGet,Route("Index/{ID}/{UID}")]
        public ActionResult EventView(int ID,int UID)
        {
        }

以下のリンクも参考にしてください。

属性ルーティングの使用中にクエリ文字列が機能しない

于 2017-05-03T10:54:14.887 に答える