답변:
예, 차이가 있습니다. 태그 만 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,600ms가 걸렸습니다. 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
하여 생성하십시오. 그러한 미세 최적화를 시도하지 마십시오. 뷰에서 추악한 코드로 끝납니다.