我是MVC的新手,所以请原谅我的无知。我所拥有的是一个Google Maps脚本,它将根据用户页面动态更改标记位置。在Web表单中,我可以用下面的代码编写脚本,如下所示:

protected void maps_wrapper_Init(object sender, EventArgs e)
    {

        maps_wrapper.Text = "<script> " +
        "function initialize() {" +
          "var mapOptions = {" +
            "zoom: 12," +
            "center: new google.maps.LatLng(-25.363882, 131.044922)," +
            "mapTypeId: google.maps.MapTypeId.SATELLITE" +
          "};" +

          "var map = new google.maps.Map(document.getElementById('map-canvas')," +
             " mapOptions);" +

          "var image = 'img/mapMarker.png';" +
          "var marker = new google.maps.Marker({" +
            "position: map.getCenter()," +
            "map: map," +
            "title: 'Click to zoom'," +
            "icon: image" +
          "}); " +

          "google.maps.event.addListener(map, 'center_changed', function() {" +
            "window.setTimeout(function() {" +
              "map.panTo(marker.getPosition());" +
            "}, 3000);" +
          "});" +

          "google.maps.event.addListener(marker, 'click', function() {" +
            "map.setZoom(18);" +
            "map.setCenter(marker.getPosition());" +
          "});" +
        "}" +

        "google.maps.event.addDomListener(window, 'load', initialize);" +
        "</script> ";


    }


并用标签称呼它

<asp:Label runat="server" ID="map_wrapper" OnInit="search_wrapper_Init" />


您将如何在MVC中做到这一点?

还是我朝着完全错误的方向前进?

最佳答案

您无需将脚本放入控制器中。 JavaScript是客户端代码,您将其放在视图中。

<script type="text/javascript">
    function initialize() {
      var mapOptions = {
        zoom: 12,
        center: new google.maps.LatLng(-25.363882, 131.044922),
        mapTypeId: google.maps.MapTypeId.SATELLITE
      };

    // etc.

</script>


或在视图引用的自己的.js文件中,或包含在视图使用的脚本包中。

(它实际上不应该在Web窗体的代码隐藏中,它应该在页面上。或者在页面引用的.js文件中。)

关于javascript - 如何在.net MVC5 Controller 中编写JavaScript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29156939/

10-09 20:13
查看更多