[asp.net-mvc] ASP.NET Razor의 HTML.ActionLink 및 Url.Action
사이에 어떤 차이가 있습니까 HTML.ActionLink
대 Url.Action
하거나 같은 일을하는 두 가지 방법은?
언제 다른 것을 선호해야합니까?
답변
예, 차이가 있습니다. 태그 만 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 도 있습니다 .
답변
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")'"/>