HTML.ActionLink
とUrl.Action
の間に違いはありますか、それとも同じことをする2つの方法にすぎませんか?ASP.NET RazorのHTML.ActionLinkとUrl.Actionの比較
どちらを優先させるべきですか?
HTML.ActionLink
とUrl.Action
の間に違いはありますか、それとも同じことをする2つの方法にすぎませんか?ASP.NET RazorのHTML.ActionLinkとUrl.Actionの比較
どちらを優先させるべきですか?
はい、違いがあります。 Html.ActionLink
は<a href=".."></a>
タグを生成しますが、Url.Action
はURLのみを返します。例えば
:
@Html.ActionLink("link text", "someaction", "somecontroller", new { id = "123" }, null)
が生成:
<a href="/somecontroller/someaction/123">link text</a>
とUrl.Action("someaction", "somecontroller", new { id = "123" })
は生成:また、子コントローラのアクションを実行Html.Actionあり
/somecontroller/someaction/123
。あなたは、私は特にいくつかのアクションを行うためのボタンが必要な場合、私はちょうど、リンクをしたい場合は、私が使用するのに対し、私は、@ Url.Actionでそれをしなければならないことがわかります上記の例では
<p>
@Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm("Index", "Company", FormMethod.Get))
{
<p>
Find by Name: @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
<input type="submit" value="Search" />
<input type="button" value="Clear" onclick="location.href='@Url.Action("Index","Company")'"/>
</p>
}
@ Html.ActionLink 。 アクションURL(url)が使用されている要素(HTML)を使用する必要があるときです。
Html.ActionLink
は自動的に<a href=".."></a>
タグを生成します。
Url.Action
は、URLのみを生成します。例えば
:
@Html.ActionLink("link text", "actionName", "controllerName", new { id = "<id>" }, null)
が生成:
<a href="/controllerName/actionName/<id>">link text</a>
と
@Url.Action("actionName", "controllerName", new { id = "<id>" })
を生成する:
/controllerName/actionName/<id>
好きなベストプラスポイントを使用していますUrl.Action(...)
他のHTMLタグでも自分のリンクテキストを簡単に設定できるアンカータグを自分で作成しています。
<a href="@Url.Action("actionName", "controllerName", new { id = "<id>" })">
<img src="<ImageUrl>" style"width:<somewidth>;height:<someheight> />
@Html.DisplayFor(model => model.<SomeModelField>)
</a>
以下のコードを使用してボタンを作成してくれました。
<input type="button" value="PDF" onclick="location.href='@Url.Action("Export","tblOrder")'"/>
することはでき、適切なCSSスタイルを使用して、ボタンとしてHtml.ActionLinkやすい存在。たとえば :
@Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" })
これは、HTML.ActionLinkとUrl.Actionの違いについて、元の質問には答えていません。おそらく答えの代わりにコメントを使うべきでしょう。 – Fencer04
うーん....場合にはページ上のリンクの何百もあるので、それはアンカーのための完全なHTMLを生成するので、その後HTML.ActionLinkは、右遅れるかもしれません? –
@ PankajUpadhyay、asp.net mvcアプリケーションでURLを扱うときは、常にhtmlまたはurlヘルパーを使用する必要があります。100分の1のリンクがあっても、それらを生成するには 'Html.ActionLink'を使います。このようなマイクロ最適化を行わないでください。あなたはあなたの意見に醜いコードで終わるでしょう。 –
datは、リンクをレンダリングする際に、すべての状況でUrl.ActionよりもHtml.ActionLink()を優先する必要があることを意味します。 BTWでは、asp.net WebサイトのMicrosoft公式チュートリアル(MVC Music Store)は、リンクが必要なときはいつも、Url.Actionをほとんどの時間使いました。 –