Umbraco Apiクラスからデータにアクセスし、これをJavaScript関数に渡すことを試みました。すべてのヘルプは、次のエラーを乗り越えることに感謝します。 -コントローラでアクションが見つかりませんでした。UmbracoApiController
public class MapApiController : UmbracoApiController
{
[HttpPost]
public void GetMapMarkers(int nodeId)
{
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var contentItem = new Node(nodeId);
// Get the map values
var map = contentItem.GetProperty("mapLocation").Value;
var lat = map.Split(',')[0];
var lng = map.Split(',')[1];
var zoom = map.Split(',')[2];
var infoTitle = string.Empty;
if (contentItem.GetProperty("mapLocationTitle") != null)
{
infoTitle = contentItem.GetProperty("mapLocationTitle").Value;
}
var infoText = string.Empty;
if (contentItem.GetProperty("mapLocationInfo") != null)
{
infoText = contentItem.GetProperty("mapLocationInfo").Value;
}
string markerImageId;
IPublishedContent markerImage;
var mapSettings = JJWHelper.GetMapSettings();
var markerImageUrl = mapSettings.MapPointerImage;
if (contentItem.HasProperty("mapPointerImage"))
{
markerImageId = contentItem.GetProperty("mapPointerImage").Value;
markerImage = umbracoHelper.TypedMedia(markerImageId);
markerImageUrl = markerImage.Url;
}
var markers = new Marker[contentItem.ChildrenAsList.Count + 1];
markers[0] = new Marker
{
MapLocation = map,
Lat = Convert.ToDouble(lat),
Lng = Convert.ToDouble(lng),
Zoom = Convert.ToDouble(zoom),
InfoTitle = !string.IsNullOrEmpty(infoTitle) ? infoTitle : " ",
InfoText = !string.IsNullOrEmpty(infoText) ? infoText : " ",
MarkerImageUrl = markerImageUrl
};
var loopCtr = 1;
foreach (var pointer in contentItem.ChildrenAsList)
{
map = pointer.GetProperty("mapLocation").Value;
lat = map.Split(',')[0];
lng = map.Split(',')[1];
infoTitle = pointer.GetProperty("mapLocationTitle") != null ? pointer.GetProperty("mapLocationTitle").Value : string.Empty;
infoText = pointer.GetProperty("mapLocationInfo") != null ? pointer.GetProperty("mapLocationInfo").Value : string.Empty;
markerImageId = pointer.GetProperty("mapPointerImage").Value;
markerImage = umbracoHelper.TypedMedia(markerImageId);
// Marker Image is mandatory, but issue (?) in Umbraco is allowing pointer node
// to be published even though a pointer image has not been selected.
// So, check that we actually have a marker image before adding it to the output array
if (markerImage == null)
{
continue;
}
markerImageUrl = markerImage.Url;
markers[loopCtr] = new Marker
{
MapLocation = map,
Lat = Convert.ToDouble(lat),
Lng = Convert.ToDouble(lng),
Zoom = Convert.ToDouble(zoom),
InfoTitle = !string.IsNullOrEmpty(infoTitle) ? infoTitle : " ",
InfoText = !string.IsNullOrEmpty(infoText) ? infoText : " ",
MarkerImageUrl = markerImageUrl
};
loopCtr++;
}
var json = new JavaScriptSerializer().Serialize(markers);
HttpContext.Current.Response.ContentType = "application/json";
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public);
HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.AddDays(10));
HttpContext.Current.Response.Cache.SetETag(nodeId.ToString(CultureInfo.InvariantCulture));
HttpContext.Current.Response.Write(json);
}
AJAX呼び出し - -
{,…}
Message
:
"No HTTP resource was found that matches the request URI 'http://mywebsite.local/Umbraco/Api/MapApi/GetMapMarkers/4188'."
MessageDetail
:
"No action was found on the controller 'MapApi' that matches the request."
UmbracoApiControllerは、Googleの地図データと呼び出しAJAXに渡されるべきUmbracoフィールドデータ処理
var markers = (function() {
var json = null;
$.ajax({
'async': false,
'global': false,
'url': "/Umbraco/Api/MapApi/GetMapMarkers/" + nodeId,
'dataType': "json",
'type': "POST",
'success': function (data) {
json = data; } });
return json;}
クエリ文字列パラメータとして 'nodeId'を渡して試してみてください:'ます。http://mywebsite.local/Umbraco/Api/MapApi/GetMapMarkersのnodeId = 4188' – elolos
はまだ –