HTML.ActionLink vs Url.Action στο ASP.NET Razor

Υπάρχει κάποια διαφορά μεταξύ του HTML.ActionLink και του Url.Action ή είναι απλώς δύο τρόποι για να γίνει το ίδιο πράγμα;

Πότε θα πρέπει να προτιμήσω το ένα από το άλλο;

Λύση

Ναι, υπάρχει διαφορά. Το 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>

and Url.Action("someaction", "somecontroller", new { id = "123" }) generates:

/somecontroller/someaction/123

Υπάρχει επίσης η Html.Action η οποία εκτελεί μια ενέργεια ενός παιδικού ελεγκτή.

Σχόλια (8)

Το Html.ActionLink δημιουργεί αυτόματα μια ετικέτα <a href=".."></a>.

Το Url.Action παράγει μόνο ένα url.

Για παράδειγμα:

@Html.ActionLink("link text", "actionName", "controllerName", new { id = "" }, null)

παράγει:

<a href="/controllerName/actionName/id">link text</a>

και

@Url.Action("actionName", "controllerName", new { id = "" }) 

παράγει:

/controllerName/actionName/

Το καλύτερο πλεονέκτημα που μου αρέσει είναι η χρήση του Url.Action(...)

Δημιουργείτε την ετικέτα άγκυρας από μόνοι σας, όπου μπορείτε να ορίσετε το δικό σας συνδεδεμένο κείμενο εύκολα ακόμη και με κάποια άλλη ετικέτα html.


<a href="@Url.Action("actionName", "controllerName", new { id = "id" })">
Σχόλια (0)
<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. Το θέμα είναι όταν πρέπει να χρησιμοποιήσετε κάποιο στοιχείο(HTML) με δράση χρησιμοποιείται το url.

Σχόλια (0)