В настоящее время у меня есть пользовательский элемент управления, который используется как на странице / 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"], который затем отображает возможные адреса для конечного пользователя.
Теперь это отлично работает для отображения адресов, но я действительно хочу, чтобы этот список отображался как список гиперссылок, чтобы пользователь мог щелкнуть соответствующий адрес, и форма будет отправлена с этим адресом вместо адреса в текстовое поле. Есть какой-либо способ сделать это?





Что-то типа:
<a href='javascript:void(0);' onclick='submitAddress(this);'>
<%= geocodeResult.StreetAddress %></a>
где у тебя есть
function submitAddress(link) {
$('input#streetAddress:first').text(link.innerHtml);
$('input#submit').click();
}
Вы также можете поместить его в скрытое поле, которое будет означать, что вам не нужно выполнять поиск по карте Google для этого адреса. То есть, если указан HiddenStreetAddress, просто используйте with без поиска. Если нет, то выполните поиск в Google по StreetAddress. Если результатов более одного, то отображать результаты. Если нет, то используйте предоставленный.