Υπάρχει κάποια διαφορά μεταξύ του 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 η οποία εκτελεί μια ενέργεια ενός παιδικού ελεγκτή.
Το 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. Το θέμα είναι όταν πρέπει να χρησιμοποιήσετε κάποιο στοιχείο(HTML) με δράση χρησιμοποιείται το url.