2017-03-23 8 views
0

単純なCreateプロセスを実行できるように、コントローラに2つのパラメータを渡そうとしています。Html.Actionlinkは、両方のパラメータをコントローラに渡すことはできません - null可能なint例外

私ActionLinkのは、次のとおりです。アクションリンクをクリックしたURLがONL最初のIDはなく、このような状の第2の提供ところが

[Route("{customerId}/{id}")] 
    public ActionResult Create(int id, int customerId) 
    { 
     if (customerId == 0) 
     { 
      return HttpNotFound(); 
     } 

     var customer = _context.Customers.Single(c => c.Id == customerId); 

     if (customer == null) 
     { 
      return HttpNotFound(); 
     } 

     var viewModel = new CreateErroneousBillViewModel 
     { 
      Id = id, 
      CustomerId = customer.Id, 
     }; 

     return View("CreateErroneousBillForm", viewModel); 
    } 

Html.ActionLink("New EB", "Create", "Erroneous", new { id = Model.Id, customerId = Model.Customer.Id }, htmlAttributes: null) 

私のコントローラがあります

http://localhost:65339/Erroneous/Create/24/ 

ここで、24は顧客のIDです

私はそれが

http://localhost:65339/Erroneous/Create/24/1 

1のようなものを提供するべきだと思う一方、同上

すべてのヘルプ感謝は、今しばらくの間、この上で、私の頭を悩まれています。

編集:私はまた、これもうまくいきませんでしたモデル

Html.ActionLink("New EB", "Create", "Erroneous", new { id = 1, customerId = 24 }, htmlAttributes: null) 

からNULL値を排除するために絶対値を設定しようとした

。あなたはHtml.ActionLinkを呼び出すときに、すべての まずこのdataAnotationを削除[ルートは( "{はcustomerId}/{ID}")] 、その後、( "新EB" は、「作成:

+0

Model.Customer.Idがnullではありませんか? – Usman

+0

リンクを絶対値を含むように変更しようとしましたが、それでも同じ問題が発生します。私はid = 1、customerId = 24.これを私の元の質問の一部として追加しました。ありがとう! –

+0

あなたの質問は、私が従来のルーティングと属性ルーティングを使用するときに有効です。私は期待通りの結果を得ます。/ 24/1 – Usman

答えて

0

私たちはこれを解決しました。

私は愚かなエラーを作り、誤ったアクションリンクを変更して、私たちがUIでクリックしたものが完全に間違っていることが判明しました。

Doh!

0

これは、私は、これがどうなるかであります"、"間違った "、新しい{id = 1、customerId = 24}、htmlAttributes:null) http://localhost:65339/Erroneous/Create?id=1&customerId=24 私の答えがあなたを助けてくれることを祈っています。

+0

AttributeRoutingを削除しても何も変更されず、URLはhttp:// localhost:65339/Erroneous/Create/24 :(ありがとう –