如何使用 razor 语法设置 javascript 变量或调用函数

How do I set javascript variables or call functions with the razor syntax?

本文关键字:变量 调用 函数 javascript 设置 何使用 razor 语法      更新时间:2023-09-26

这是一个关于Web编程的初学者问题。基本上,我有一个页面显示使用谷歌地图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>

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