我目前有一个在/Address/Edit和/Address/Create页面上都使用的用户控件。这个用户控件只包含以下代码,用于向系统提交新地址:
<%
using (Html.BeginForm())
{
%>
<table>
<tr>
<td>Street Address</td>
<td>
<%= Html.TextBox("StreetAddress", (ViewData.Model != null) ? ViewData.Model.StreetAddress : "") %>
<%= Html.ValidationMessage("Address.StreetAddress") %>
</td>
</tr>
</table>
<%= Html.SubmitButton() %>
<%
if (ViewData["GeocodeResults"] != null) {
%>
<p>
Google maps found the following addresses that matched the address you entered. Please select
the appropriate address. If none of these addresses are correct, try reentering the address
again and be as specific as possible.
</p>
<ul>
<%
foreach (GeocodeResult geocodeResult in (List<GeocodeResult>)ViewData["GeocodeResults"]) {
%>
<li>
<%= geocodeResult.StreetAddress %>
</li>
<%
}
%>
</ul>
<%
}
%>
<%
}
%>
总结上面的代码,它的作用是在控制器中查询Google Maps以对文本框中的地址进行地理编码(即将其转换为一组经度/纬度坐标)。当Google Maps返回多个结果时,我将这些结果存储到ViewData"GeocodeResults“中,然后它将向最终用户显示可能的地址。
现在,这可以很好地显示地址,但我真正想要的是将该列表呈现为超链接列表,以便用户可以单击适当的地址,表单将使用该地址提交,而不是文本框中的地址。有没有办法做到这一点?
发布于 2008-11-16 17:58:42
类似于:
<a href='javascript:void(0);' onclick='submitAddress(this);'>
<%= geocodeResult.StreetAddress %></a>
你有的地方
function submitAddress(link) {
$('input#streetAddress:first').text(link.innerHtml);
$('input#submit').click();
}
你也可以把它放在一个隐藏的字段中,这意味着你不需要在谷歌地图上搜索这个地址。也就是说,如果提供了HiddenStreetAddress,则只使用without lookup。如果没有,那么在StreetAddress上进行谷歌搜索。如果有多个结果,则显示结果。如果不是,则使用提供的。
https://stackoverflow.com/questions/293652
复制相似问题