ФОРМАТ HTML.Actionlink панели против URL-адрес.Действие в ASP.NET бритва



есть ли разница между HTML.ActionLink vs Url.Action или они просто два способа сделать то же самое?



когда я должен предпочесть один над другим?

575   6  

6 ответов:

Да, есть разница. 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" }) выдает:

/somecontroller/someaction/123

есть еще 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>
<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.Действие в то время как если я просто хочу ссылку, я буду использовать @Html.ActionLink. Дело в том, что вы должны использовать какой-то элемент(HTML) с url действия используется.

@HTML.ActionLink создает HTML anchor tag. В то время как @Url.Action создает URL для вас. Вы можете легко понять это;

// 1. <a href="/ControllerName/ActionMethod">Item Definition</a>
@HTML.ActionLink("Item Definition", "ActionMethod", "ControllerName")

// 2. /ControllerName/ActionMethod
@Url.Action("ActionMethod", "ControllerName")

// 3. <a href="/ControllerName/ActionMethod">Item Definition</a>
<a href="@Url.Action("ActionMethod", "ControllerName")"> Item Definition</a>

оба эти подхода различны, и это полностью зависит от ваших потребностей.

вы можете легко представить Html.ActionLink как кнопка с помощью соответствующего стиля CSS. Например:

@Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" })

я использовал код ниже, чтобы создать кнопку, и это сработало для меня.

<input type="button" value="PDF" onclick="location.href='@Url.Action("Export","tblOrder")'"/>

Comments

    Ничего не найдено.