質問

かみそりページに以下にリンクがあります:

@Html.ActionLink("Create New Profile", "Create", "Profile", new { @class="toplink" })

以下に示すように、これらのビューソースページに表示されます。

<a href="/admin/profile/create?length=7" class="toplink">Create New Profile</a>

リンクをクリックすると、URLは次のようになります。

http://localhost:54876/admin/profile/create?length=7

私はほしくない ?length=7. 。なぜこの自動が生成されるのですか?

役に立ちましたか?

解決

ActionLink オーバーライドあなたがマッチを使用しています (string linktext、string actionname、object routevalues、object htmlattributes) オーバーライド。したがって、あなたの「プロファイル」値はに渡されています routeValues パラメーター。このパラメーターに関するこの関数の動作は、その上のすべてのパブリックプロパティを取得し、リンクを生成するために使用されるルート値のリストに追加することです。文字列には1つの公共財産(長さ)しかないので、「長さ= 7」になります。

使用したい正しい過負荷はです (文字列linktext、string actionname、string controllname、object routevalues、object htmlattributes) そして、あなたはそれをロークと呼んでいます:

@Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink"})

他のヒント

これの正確な原因はわかりませんが、次のように変更します。

@Html.ActionLink("Create New Profile", "Create", "Profile", new {}, new { @class="toplink" })

最後のパラメーターを除外したときに、MVCがどの過負荷を選択しているのかわかりません(htmlattributes 追加されたものですが、それはそれを修正します。これらの日のうちの1つは、何が起こっているのかを調査し、正確に把握します。

あなたがでコントローラーを定義しているので、別のことに注意すべきこと @ActionLink, 、たとえば、「新しいプロファイルを作成する」という見解など、必要ではないかもしれません。 @ActionLink 表現されているのは「/admin/profile/index.cshtml」です。これは、既存のプロファイルをリストするビューです。この場合、コントローラーを定義する必要はありません。 @ActionLink として @ActionLink 既にに関連しています ProfileController, 、だからあなた @ActionLink になり得る

@Html.ActionLink("Create New Profile", "Create", null, new { @class="toplink" })

使った null それ以外の new{} 顕著な答えがそうであるように、これは私自身がより適切だと思います。 ActionLinkのオーバーロードは、これまでで最も簡単なものではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top