HTML.ActionLink
vsに違いはありますUrl.Action
か、それとも同じことを行うための2つの方法にすぎませんか?
どちらを優先するべきですか?
HTML.ActionLink
vsに違いはありますUrl.Action
か、それとも同じことを行うための2つの方法にすぎませんか?
どちらを優先するべきですか?
回答:
はい、違いがあります。タグをHtml.ActionLink
生成しますが、URLのみを返します。<a href=".."></a>
Url.Action
例えば:
@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" })
生成する:
/somecontroller/someaction/123
子コントローラーアクションを実行するHtml.Actionもあります。
<a>
)を生成する必要がある場合はHtml.ActionLinkを使用します。URLのみを生成する必要がある場合は、Url.Actionを使用します(これはコントローラーアクションでも使用できます)。
Url.Action
は、よりもはるかに優れていますHtml.ActionLink
。2つある6,000アイテムのリストがありましたHtml.ActionLinks
。リストのレンダリングには6,600ミリ秒かかりました。それなしHtml.ActionLinks
では52msかかりました。使用Url.Action
に270msかかりました。確かに、6000アイテムは大きなリストですが、将来の参照用に追加するつもりです。
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>
<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>
}
上記の例では、特定のアクションを実行するために特にボタンが必要な場合は@ Url.Actionを使用する必要があるのに対し、リンクだけが必要な場合は@ Html.ActionLinkを使用することがわかります。ポイントは、アクションURLが使用されている要素(HTML)を使用する必要がある場合です。
@HTML.ActionLink
を生成しHTML anchor tag
ます。が@Url.Action
生成さURL
れます。簡単に理解できます。
// 1. <a href="https://stackoverflow.com/ControllerName/ActionMethod">Item Definition</a>
@HTML.ActionLink("Item Definition", "ActionMethod", "ControllerName")
// 2. /ControllerName/ActionMethod
@Url.Action("ActionMethod", "ControllerName")
// 3. <a href="https://stackoverflow.com/ControllerName/ActionMethod">Item Definition</a>
<a href="@Url.Action("ActionMethod", "ControllerName")"> Item Definition</a>
これらのアプローチは両方とも異なり、それは完全にあなたの必要性に依存します。
適切なCSSスタイルを使用して、Html.ActionLinkをボタンとして簡単に表示できます。例えば:
@Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" })
以下のコードを使用してボタンを作成しましたが、うまくいきました。
<input type="button" value="PDF" onclick="location.href='@Url.Action("Export","tblOrder")'"/>
Html.ActionLink
してリンクを生成します。このようなマイクロ最適化を行わないでください。あなたはあなたの見解で醜いコードになってしまうでしょう。