0

MSVC4 では、次の形式でリンクを生成するために受け入れられている方法は何/Controller/Action/parameterですか?

私はこれを.ascxに持っています...

<%=Html.ActionLink(linkText:=doc.DocumentName, _
                  actionName:="CommissionPayment", _
                  controllerName:="GetDocument", _
                  routeValues:=New With {.DocID = doc.DocumentID}, _
                  htmlAttributes:=Nothing)
                  %>

...これはこれを返します:

http://localhost:56869/GetDocument/CommissionPayment?DocID=5511972

これはRouteConfig.vbにあります

routes.MapRoute(
    "CommissionPayment", _
    "GetDocument/CommissionPayment/{DocID}", _
    New With {.controller = "GetDocument", .action = "GetOBDocument"}, _
    New With {.DocID = "\d+"} _
    )

...そして、この URL は GetDocument コントローラーで GetOBDocument メソッドを正しく呼び出します。

http://localhost:56869/GetDocument/CommissionPayment/123123123

ただし、ActionLink 呼び出しによって返された「?DocID=123」の URL は何も呼び出しません。無効なガベージです。「リソースが見つかりません」。これは、CommissionPayment ルートの /\d+ パターンと一致しないためだと思います。そのため、サーバーは存在しない CommissionPayment アクションを探します。

明らかに、maproute を省略して を使用すること?DocIDも、URL を手動で記述することもできます。おそらく後者です。ユーザーがファイルをダウンロードすると、そのフォームはブラウザを欺いて、ダウンロード先のファイル名を制御できるようにします。

しかし、ここで何が起こっているのかを理解したいと思います。

4

1 に答える 1

1

ルート定義では、アクションは次のGetOBDocumentように定義されています。使用Html.ActionLinkする場合は、代わりにアクション名として指定する必要がありますCommissionPayment

<%=Html.ActionLink(linkText:=doc.DocumentName, _
              actionName:="GetOBDocument", _
              controllerName:="GetDocument", _
              routeValues:=New With {.DocID = doc.DocumentID}, _
              htmlAttributes:=Nothing)
              %>
于 2014-12-09T00:29:54.313 に答える