0

这是一个关于网络编程的初学者问题。基本上,我有一个页面使用 Google Map API 显示默认地址。查找“221B Baker Street,London,United Kingdom”效果很好,但是有一个文本框,我希望能够在其中写一个地址然后查找它。这是一个 cshtml 页面,我知道剃刀语法

@{if(IsPost) { do something }}

所以基本上我想Request.Form["FindAddress"];从文本框中获取并将其设置为 javascript myAddress 变量,以便显示用户地址。但我不知道如何进行内联编码。将 IsPost 条件放在 javascript 函数的 -tag 内时,它不断给我语法错误。这是完整的页面

<!DOCTYPE html>

<html>

<head id="head">
<title></title>
<link href="@Server.MapPath("~/Styles/Site.css")" rel="stylesheet" type="text/css" />
</head>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=<YOUR_API_KEY>&sensor=false"
        type="text/javascript"></script>
<script type="text/javascript">

    var myAddress = "221B Baker Street, London, United Kingdom"; // how do I overwrite this if it is (isPost)?


    var map;
    var geocoder;
    function initialize() {
        if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("map"));
            map.setCenter(new GLatLng(51.5, -0.1), 10);
            map.setUIToDefault();

            geocoder = new GClientGeocoder();                   
            showAddress(myAddress);
        }
    }
    function showAddress(address) {
        geocoder.getLatLng(address, function (point) { if (!point) { alert(address + " not found"); } else { map.setCenter(point, 15); var marker = new GMarker(point); map.addOverlay(marker); marker.openInfoWindow(address); } });
    }
</script>

<body onload="initialize()" onunload="GUnload()">
    <form id="form1" runat="server">
        <div>
            <input type="text" id="FindAddress" name="FindAddress" />
        </div>
        <div id="map" style="width: 500px; height: 500px"></div>
    </form>
</body>

</html>
4

1 回答 1

0

我还没有尝试过下面的代码,但我希望它会起作用。基本上,我将条件检查逻辑放在脚本块之外,并将结果存储在一个变量中,并在 javascript 中引用。

@{
  var address = "221B Baker Street, London, United Kingdom";

  if (Request.HttpMethod == "POST")
  {
    address = Request.Form["FindAddress"];
  }  
}

  <script type="text/javascript">

    var myAddress = "@address"; // how do I overwrite this if it is (isPost)?


    var map;
    var geocoder;
    function initialize() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(51.5, -0.1), 10);
        map.setUIToDefault();

        geocoder = new GClientGeocoder();
        showAddress(myAddress);
      }
    }
    function showAddress(address) {
      geocoder.getLatLng(address, function (point) { if (!point) { alert(address + " not found"); } else { map.setCenter(point, 15); var marker = new GMarker(point); map.addOverlay(marker); marker.openInfoWindow(address); } });
    }
  </script>
于 2012-05-21T14:29:37.480 回答