Converti un pulsante HTML in ActionLink
-
12-09-2019 - |
Domanda
Ho un pulsante HTML configurato e funzionante con una serie di proprietà richieste che vorrei invece convertire in un collegamento basato su testo.Inoltre, per poter familiarizzare con gli helper html funzionanti e con intellesense, mi piacerebbe vedere come inserire queste proprietà in un ActionLink:
<input type="button" id="RemoveRegistration_Submit<%=row.ID %>"
value="Remove From Cart"
onclick="$('#Step2_RemoveRegistrationForm input[name=id]').val('<%=row.ID %>'); $('#Step2_RemoveRegistrationForm').submit();"
align="right" />
grazie
Soluzione
Non dovrebbe essere così difficile .... ma penso che vuoi dire Html.Link perché ActionLink significa che è necessario per generare link dalla tabella di route.
<%= Html.Link("Remove from Cart", "#", new {onclick = "#Step2_RemoveRegistrationForm input[name=id]').val('<%=row.ID %>'); $('#Step2_RemoveRegistrationForm').submit();"}) %>
- param # 1: linkText
- param # 2: href
-
param # 3: htmlAttributes
public static stringa Link (questo HtmlHelper HtmlHelper, string linkText, stringa href, htmlAttributes oggetto) {
TagBuilder tagBuilder = new TagBuilder ( "a") {InnerHtml = linkText; }
tagBuilder.MergeAttributes (htmlAttributes);
tagBuilder.MergeAttributes ( "href", href);
ritorno tagBuilder.ToString (TagRenderMode.Normal);
}
e non dimenticate di <% @ Import Namespace = "xxxxxx" %> sulla vista al fine di utilizzare il metodo di estensione.
Altri suggerimenti
I pulsanti non possono fungere da collegamenti senza JavaScript.
In generale, questa è una cattiva pratica (i motori di ricerca non possono indicizzare correttamente la tua pagina, ecc.).
Ti consiglierei di utilizzare i tag di ancoraggio e di farli sembrare dei pulsanti.
Ma se ne hai davvero bisogno... Questo l'articolo fornisce una risposta.
MODIFICARE:
Scusa.Ho sparato la mia risposta un po' troppo in fretta.
Questo non è esattamente quello che stai chiedendo (HtmlHelper non è coinvolto) ma è così che risolverei questo problema:
in considerazione definirei ancoraggio (gli ancoraggi senza href superano la convalida W3):
<a id='removefromcart_<%=row.ID%>' title='Remove from cart'
class='remove-link' />
nel file JavaScript esterno:
var onclick = function(event){
event.preventDefault();
var link = $(event.targetSource());
//tag ids should be injected through view asp/cx
$('#Step2_RemoveRegistrationForm input[name=id]')
.val(link.attr('id').split('_')[1])
};
$('a[id^=removefromcart]').click(onclick);
nel CSS:
a {cursor:pointer;} /*anchors without href by default haven't pointer*/
Credo che sarebbe troppo complicato curiosare con Javascript in HtmlHelpers.
EDIT2:
Il testo di ancoraggio è definito all'interno dei tag.Lo confondo sempre.E sembra che targetSource() è sbagliato pure.Prova a riscriverlo:event.targetSource()=>event.target.