2

MVC を使用するのは初めてなので、試してみようと思いました。

私の ActionLink に問題があります:

foreach (var item in areaList)
{
    using (Html.BeginForm())
    {
        <p>
         @Html.ActionLink(item.AreaName, "GetSoftware","Area", new { id = 0 },null);
        </p>
    }
}

GetSoftware は私のアクションで、Area は私のコントローラーです。

私のエラー:

The parameters dictionary contains a null entry for parameter 'AreaID' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult GetSoftware(Int32)

私の行動:

public ActionResult GetSoftware(int AreaID)
{
    return View();
}

ここで同じ質問をチェックしましたが、応答に従っていますが、それでも同じエラーが発生します。誰もが何が悪いのか考えました

4

6 に答える 6

1

アクションのパラメーター名が一致しません。これを使用するだけです:

@Html.ActionLink(item.AreaName, "GetSoftware", "Area", new { AreaID = 0 }, null);
于 2013-07-20T13:51:42.853 に答える
0
@Html.ActionLink(item.AreaName, "GetSoftware","Area", new {AreaID = 0 },null);

これでうまくいくと思います。

于 2013-07-20T13:57:12.837 に答える
0

これを試して

 foreach (var item in areaList)
{
  using (Html.BeginForm())
  {
     <p>
        @Html.ActionLink(item.AreaName, //Title
                  "GetSoftware",        //ActionName
                    "Area",             // Controller name
                     new { AreaID= 0 }, //Route arguments
                        null           //htmlArguments,  which are none. You need this value
                                       //     otherwise you call the WRONG method ...
           );
    </p>
  }
}
于 2013-07-30T06:35:41.747 に答える
0

アクション メソッドのパラメーターを変更するだけです。あなたActionLink()は次のようなものです:

@Html.ActionLink(item.AreaName, "GetSoftware", "Area", 
    routeValues: new { id = 0 }, htmlAttributes: null)

コントローラーを次のように変更する必要があります。

public ActionResult GetSoftware(int id)
{
    return View();
}

これはデフォルトのルーティング動作です。AreaIDパラメータとして使用する必要がある場合は、 でルートを宣言し、デフォルト ルートの前にRouteConfig.cs配置する必要があります。

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");            

        // some routes ...

        routes.MapRoute(
            name: "GetSoftware",
            url: "Area/GetSoftware/{AreaID}",
            defaults: new { controller = "Area", action = "GetSoftware", AreaID = UrlParameter.Optional }
        );

        // some other routes ...

        // default route

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );  
于 2013-07-30T06:33:19.567 に答える
0
 @Html.ActionLink(item.AreaName, "GetSoftware","Area", new {AreaID = 0 },null);
于 2013-07-20T13:51:53.060 に答える
0

ActionLink ヘルパーの 4 番目のパラメーターとして送信する匿名型には、アクション メソッドのパラメーターと同じ名前のメンバーが必要です。

@Html.ActionLink("LinkText", "Action","Controller", routeValues: new { id = 0 }, htmlAttributes: null);

コントローラ クラスのアクション メソッド:

public ActionResult Action(int id)
{
     // Do something. . .

     return View();
}
于 2013-07-20T15:41:41.823 に答える