2

すべてのビューに共通の情報を送信するApplicationControllerというコントローラーを作成しました。これは、システム内のすべてのコントローラーが継承します。

部分的なビューでは、Html.ActionLink()を使用します。

@Html.ActionLink("Link Title", "/MyController/MyAction")
// OUTPUT: <a href="/MyIISVirtualDirectory/Application/MyController/MyAction">Link Title</a>

リンクをクリックすると、404が表示されます。

しかし、私が使用する場合:

@Html.ActionLink("Link Title", "MyAction", "MyController")
// OUTPUT: <a href="/MyIISVirtualDirectory/MyController/MyAction">Link Title</a>

すべてが正常に動作します。

最初の例でメソッドが/Application/を出力するのはなぜですか?これをデフォルトで削除するにはどうすればよいですか?

4

4 に答える 4

3

Razor 2.0(ASP.NET MVC 4)を使用している場合は、単純な古いリンクを使用できます。

<a href="~/MyController/MyAction">Link Title</a>

hrefは、アプリがでホストされている場合、または/MyController/MyActionアプリがでホストされている場合に変換されます。//MyIISVirtualDirectory/MyController/MyAction/MyIISVirtualDirectory

Razor 1.0(ASP.NET MVC 3)では、構文はもう少し冗長です。

<a href="@Href("~/MyController/MyAction")">Link Title</a>

詳細はこちら

于 2013-03-04T20:47:50.803 に答える
1

あなたが望むことをする最も簡単な方法はこれです:

<a href="@Url.Content("~/MyController/MyAction")">Link Title</a>

ただし、ルーティングロジックが完全に壊れます。これは、コンテンツファイル(名前が示すように)、css、jsなどに使用する必要があります...コントローラーアクションには使用しないでください。デフォルトのルーティングを変更すると、上記のURLが壊れてしまう可能性があります。

于 2013-03-04T20:42:54.177 に答える
0

独自のアクションリンクヘルパーを実装します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public static class CustomHtmlHelpers
    {
        public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string routePath)
        {
            //you can do any sort of logic you want here.
            return MvcHtmlString.Create(string.Format("<a href=\"{0}\">{1}<a/>", routePath, linkText));
        }
    }
}
于 2013-03-04T20:41:14.477 に答える
0

ルートをパラメーターとして指定して、コントローラーからアクションメソッドを呼び出すことはできないと思います。これは、Html.ActionLinkのすべての拡張機能へのリンクです。

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.linkextensions.actionlink(v=vs.108).aspx

ルートはglobal.asaxで定義されており、必要に応じてルートを定義できます。出力からの/Application/はApplicationControllerです。デフォルトでは、ビューを呼び出しているコントローラーは、アクションメソッドを検索するコントローラーです。

それが役に立てば幸い。

于 2013-03-04T20:36:40.713 に答える