2012-10-03 35 views
6

我在形成兩個隱藏輸入字段:ASP.NET MVC 3 HiddenFor的Javascript

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

我通過執行以下分配自己的價值:

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

有人能告訴我如何我可以刪除隱藏的<input>字段,並用@Html.HiddenFor<>替換它們,並使我的Javascript更新爲隱藏的?我想這樣做,因爲它顯然會自動綁定數據。

我HiddenFor目前看起來是這樣的:

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

我改變Javascript功能來做到這一點:

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

我在控制檯中出現以下錯誤:

Uncaught TypeError: Cannot set property 'value' of null 

任何人都可以看到我去哪裏可怕的錯誤?

回答

10

這些字段的ID將具有下劃線而不是點,它們的名稱將具有點。試試這個:

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

。非常非常感謝你。 – Subby

3

您的問題是id將是另一個。 Listing.Location.Latitude是名稱屬性。

例如:

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

產生爲:

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

非常感謝你 – Subby

4

嘗試此。

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

所以你可以使用JavaScript元素:這工作完美

document.getElementById("theIdyouWant") 
+1

啊。不知道我可以指定一個這樣的ID。非常感謝你。 – Subby