0

Web アプリケーション (モバイル テンプレートを使用) に c# と ASP.NET MVC4 を使用しています。詳細表示ページに問題があります。(最初にインデックス ページから何かを選択すると、詳細ページに移動します) ページに bing マップを配置しましたが、マップが読み込まれません。最初は地図がおかしいのかと思ったがそうでもない。URLがページのものであることに気付き ましたhttp://localhost:2550/Place/Details 。ただし、最後に「1」を手動で配置するとhttp://localhost:2550/Place/Details/1 、マップがページに読み込まれます。これがなぜなのかわかりません...

誰かが理由を知っていますか?ありがとう

詳細の私のビューページ:

@model Project.Models.Place
@{ ViewBag.Title = "Details";}
<h2>Place Details</h2>
<fieldset>
<div class="display-label"> Name: @Model.Name</div>
<div class="display-label">Address: @Model.Address</div>
<div class="display-label">Post Code: @Model.PostCode</div>
<div class="display-label"> PhoneNo: @Model.PhoneNo</div>
</fieldset>

<p>    @Html.ActionLink("Back to List", "Index")</p>

<body onload="getMap();">
  <div id='myMap' style="position:relative; width:400px; height:400px;"></div>
  <div>
     <input type="button" value="createWalkingRoute" onclick="createDirections();" />
  </div>
  <div id='directionsItinerary'> </div> 
</body>

@section scripts{

 <script type="text/javascript"    src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
  <script type="text/javascript">
      var map = null;
      var directionsManager;
      var directionsErrorEventObj;
      var directionsUpdatedEventObj;

      function getMap() {
          map = new Microsoft.Maps.Map(document.getElementById('myMap'), { credentials: 'mykey' });
      }

      function createDirectionsManager() {
          var displayMessage;
          if (!directionsManager) {
              directionsManager = new Microsoft.Maps.Directions.DirectionsManager(map);
              displayMessage = 'Directions Module loaded\n';
              displayMessage += 'Directions Manager loaded';
          }
          alert(displayMessage);
          directionsManager.resetDirections();
          directionsErrorEventObj = Microsoft.Maps.Events.addHandler(directionsManager, 'directionsError', function (arg) { alert(arg.message) });
          directionsUpdatedEventObj = Microsoft.Maps.Events.addHandler(directionsManager, 'directionsUpdated', function () { alert('Directions updated') });
      }

      function createWalkingRoute() {
          if (!directionsManager) { createDirectionsManager(); }
          directionsManager.resetDirections();
          // Set Route Mode to walking 
          directionsManager.setRequestOptions({ routeMode: Microsoft.Maps.Directions.RouteMode.walking });
          var seattleWaypoint = new Microsoft.Maps.Directions.Waypoint({ address: 'Seattle, WA' });
          directionsManager.addWaypoint(seattleWaypoint);
          var redmondWaypoint = new Microsoft.Maps.Directions.Waypoint({ address: 'Redmond, WA', location: new Microsoft.Maps.Location(47.678561, -122.130993) });
          directionsManager.addWaypoint(redmondWaypoint);
          // Set the element in which the itinerary will be rendered
          directionsManager.setRenderOptions({ itineraryContainer: document.getElementById('directionsItinerary') });
          alert('Calculating directions...');
          directionsManager.calculateDirections();
      }

      function createDirections() {
          if (!directionsManager) {
              Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback: createWalkingRoute });
          }
          else {
              createWalkingRoute();
          }
      }
  </script>

}

詳細のコントローラーアクション:

    public ViewResult Details(int id)
    {
        ViewBag.events = eventRepository.PlaceEvents(id);
        return View(placeRepository.Find(id));
    }
4

2 に答える 2

0

末尾に /1 があるナビゲーションは機能するが、現在の URL に数字がない場合は、インデックス ページの URL が間違っています。あなたのURLは次のようになりました

@Html.ActionLink("Details", "Place")

次のように変更します。

@Html.ActionLink("Details", "Place", new { id = @Model.Id })

したがって、問題は、詳細アクションに ID が指定されていないことです。

于 2013-03-13T09:59:21.880 に答える