7

我的表单中有两个隐藏的输入字段:

<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>字段并将它们替换为 a@Html.HiddenFor<>并使我的 Javascript 更新 HiddenFor 吗?我想这样做是因为它显然会自动绑定数据。

我的 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 

任何人都可以看到我要去哪里可怕的错误?

4

3 回答 3

11

这些字段的 ID 将带有下划线而不是点,它们的名称将带有点。尝试这个:

document.getElementById('Listing_Location_Latitude').value = lat;
于 2012-10-03T09:11:46.443 回答
5

尝试这个。

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

因此,您可以使用 Javascript 获取元素:

document.getElementById("theIdyouWant")
于 2012-10-03T09:22:44.123 回答
3

你的问题是那id将是另一个。Listing.Location.Latitude是名称属性。

例如:

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

生成为:

<input id="General_Site_Name" type="text" name="General.Site_Name" />
于 2012-10-03T09:13:50.137 回答