2012-10-03 7 views
6

Ich habe zwei versteckte Eingabefelder in meiner Form:ASP.NET MVC 3 HiddenFor Javascript

<input type="hidden" name="lat" id="lat" value=""/> 
<input type="hidden" name="long" id="long" value="" /> 

ich ihren Wert am Zuweisung durch die folgenden Aktionen ausführen:

document.getElementById('lat').value = lat; 
document.getElementById('long').value = lng; 

Kann jemand bitte sagen Sie mir, wie Ich kann die versteckten <input> Felder entfernen und sie durch eine @Html.HiddenFor<> ersetzen und mein Javascript-Update das HiddenFor machen? Ich möchte dies tun, weil es die Daten offensichtlich automatisch bindet.

Mein HiddenFor sieht derzeit so etwas wie dieses:

@Html.HiddenFor(m => Model.Listing.Location.Latitude); 
@Html.HiddenFor(m => Model.Listing.Location.Longitude); 

ich die Javascript ändern, dies zu tun:

document.getElementById('Listing.Location.Latitude').value = lat; 
document.getElementById('Listing.Location.Longitude').value = lng; 

Ich erhalte die folgende Fehlermeldung in der Konsole:

Uncaught TypeError: Cannot set property 'value' of null 

Kann jemand sehen, wo ich schrecklich falsch gehe?

Antwort

10

Die IDs dieser Felder haben Unterstriche und keine Punkte, ihre Namen haben die Punkte. Versuchen Sie folgendes:

document.getElementById('Listing_Location_Latitude').value = lat; 
+0

, die perfekt gearbeitet. Vielen vielen Dank. – Subby

3

Ihr Problem ist, dass id eine andere sein wird. Listing.Location.Latitude ist das Namensattribut.

Zum Beispiel:

@Html.TextBoxFor(x => x.General.Site_Name) 

erzeugt, wie:

<input id="General_Site_Name" type="text" name="General.Site_Name" /> 
+0

Vielen Dank – Subby

4

bereits.

@Html.HiddenFor(m => m.Listing.Location.Latitude, new {id = "theIdyouWant"}) 

So können Sie das Element mit Javascript erhalten:

document.getElementById("theIdyouWant") 
+1

Ah. Wusste nicht, dass ich so eine ID angeben könnte. Vielen Dank. – Subby