[asp.net-mvc] ASP.NET Razor의 HTML.ActionLink 및 Url.Action

사이에 어떤 차이가 있습니까 HTML.ActionLinkUrl.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")'"/>


답변