0

文字列プロパティ「Url」を持つオブジェクトをxmlにシリアル化する必要があります-アクションメソッドによって返されるページのURLです(asp.net mvc 3アプリでカスタムrssを実装したい)。

アクションメソッドを呼び出すには、このメソッドが属するコントローラーをインスタンス化する必要があると思います:)

MyController c = new MyContrroller();
c.MyActionMethod();

しかし、このアクション メソッドによって返されるページの URL を取得するにはどうすればよいでしょうか??

編集 1: @SLaks が答えUrl.Action()たように、アクション メソッドの URL を取得するために使用できますが、この URL を xml ファイルに渡すにはどうすればよいですか?? Url.Action()の結果を単に割り当てると、linkMyController/MyAction という文字列が表示されます。

4

2 に答える 2

2

アクション メソッドによって返されるページには URL がありません。

代わりに、アクション メソッド自体に、ルーティング エンジンからの URL があります。

を呼び出して、アクションへの URL を取得できますUrl.Action(actionName, controllerName)

于 2013-02-11T14:54:49.860 に答える
1

私はあなたが必要なことをするための組み込みの方法はないと思います。手動で行う必要があります。たとえば、次のようになります。

public static class UrlExtension
{
    public static string ToAbsoluteUrl(this string relativeUrl, HttpContext httpContext)
    {
        string http = "http" + (httpContext.Request.IsSecureConnection ? "s" : string.Empty);
        string host = httpContext.Request.Url.Host;
        string port = httpContext.Request.Url.Port == 80 ? string.Empty : string.Format(":{0}", httpContext.Request.Url.Port);            

        return string.Format("{0}://{1}{2}{3}", http, host, port, relativeUrl);
    }
}

例:

<a href="@Url.Action("Index", "Home").ToAbsoluteUrl(HttpContext.Current)">Index</a>
<a href="@Url.Action("TestAction", "Home").ToAbsoluteUrl(HttpContext.Current)">TestAction</a>

レンダリング結果:

<a href="http://localhost/">Index</a>
<a href="http://localhost/Home/TestAction">TestAction</a>
于 2013-02-11T16:36:29.210 に答える