Come faccio a passare dei valori di modello come funzione javascript parametri all’interno di un asp.net mvc Html helper tale Html.Radio?

Bene, abbastanza semplice domanda. Penso che ho bisogno di cadere in alcuni caratteri di escape, ma io non sono abbastanza sicuri di dove.

Qui è la funzione javascript sto tentando di chiamare:

function setData(associateValue, reviewDateValue) {
    var associate = document.getElementById("Associate");
    var reviewDate = document.getElementById("ReviewDate");
    associate.value = associateValue;
    reviewDate.value = reviewDateValue;
}

Qui è il asp .net mvc riga in cui io sto cercando di creare un pulsante di scelta con un clic evento che chiama la funzione di cui sopra e di passare i dati dal modello javascript valori di parametro.

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('<%=item.Associate%>','<%=item.ReviewDate%>' )"  } )%>

Di cui sopra genera un mucchio di compilare i problemi e non funziona. Una chiamata come la seguente non chiamare il javascript, ma non ottiene i dati dal modello.

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('item.Associate','item.ReviewDate' )"  } )%>

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('item.Associate','item.ReviewDate' )"  } )%>

Pensieri?

SOLUZIONE

        <% String functionCall = String.Format("setData('{0}','{1}')", Html.Encode(item.Associate), Html.Encode(item.ReviewDate )) ;  %>
        <%= Html.RadioButton("Selected", item.Selected, new { onClick=functionCall  } )%>                

OriginaleL’autore jason | 2010-07-20

2 Replies
  1. 10

    È necessario per costruire correttamente la stringa che rappresenta l’onclick evenet gestore:

    onClick = String.Format("setData('{0}', '{1}')", item.Association, item.ReviewData)
    +1, basta aggiungere una codifica HTML per garantire la possibile di preventivi nel modello dati sono correttamente sfuggito.
    Amore questa risposta marc. Molto semplice.

    OriginaleL’autore marcind

  2. 1

    Dovrebbe essere come questo:

    <%: Html.RadioButton("Selected", item.Selected, new { onClick="setData('" + Html.Encode(item.Associate) + "','" + Html.Encode(item.ReviewDate) + "' )"  } )%>

    E se è MVC2 si dovrebbe preferire l’uso : invece di = per assicurarsi che codifica HTML.

    Nota che <%: in realtà non fa alcuna differenza qui, dal momento che l’Html.RadioButton restituisce un IHtmlString che non sarà toccato da <%:. Tuttavia, è un buon consiglio per ottenere l’abitudine di usare <%: per impostazione predefinita, solo utilizzando <%= quando si ha bisogno di esso.

    OriginaleL’autore Peter Örneholm

Lascia un commento