5

これは非常に単純な質問のように聞こえますが、私の人生で答えを見つけることはできません. コントローラーやモデルでルート相対 URL ( ~/my/path) を仮想パス ( ) に変換するにはどうすればよいですか?/mywebsite/my/path

ビューでは、 を呼び出すだけで簡単に実行できます@Url.Content("~/my/path/")。また、コントローラーで物理パスを取得するのは、 を使用するのと同じくらい簡単Server.MapPath("~/my/path")です。しかし、コントローラーで仮想パスを取得する方法がわかりません。

私の主な問題は、返される JSON オブジェクトに渡すイメージのルート相対パスがあることです。ほとんどの場合、これは JavaScript によって読み取られ、ページのどこかに配置され@Url.Contentます。私の JavaScript コードでは使用できません。また、場合によっては、この JSON オブジェクトは、その意味を理解できない外部アプリケーションによって使用されます~

4

1 に答える 1

7

コントローラーでは、 Urlプロパティを使用できます。

public ActionResult Foo()
{
    string url = Url.Content("~/my/path");
    ...
}

モデルでは、このようなことはしません。モデルは、URL の生成について何も認識してはなりません。それは単にその責任ではありません。URL を処理する必要がある場合、この URL は、アプリケーションの URL を処理するレイヤー (HttpContext にアクセスできるレイヤー) によって渡される必要があります。

于 2012-01-20T07:38:42.760 に答える