【发布时间】:2014-06-25 17:54:06
【问题描述】:
我在视图的头部有以下 javascript 函数
function addMarker(title, description, lon,lat, iconT) {
var icon = new OpenLayers.Icon(iconT);
var markerslayer = new OpenLayers.Layer.Markers("Markers");
var lonlat = new OpenLayers.LonLat(lon, lat);
lonlat = lonlat.transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
var markerToAdd = new OpenLayers.Marker(lonlat, icon);
markerToAdd.icon.imageDiv.title = title + " - " + description;
markerslayer.addMarker(markerToAdd);
map.addLayer(markerslayer);
map.addControl(new OpenLayers.Control.LayerSwitcher());
}
我正在尝试使用以下任一方法调用上述函数:
@if (Model != null)
{
foreach (var item in Model)
{
<script type="text/javascript">
addMarker(@item.Title, @item.Description, @item.Longitude, @item.Latiude, @item.Icon);
</script>
}
}
或者
public ActionResult Index()
{
List<CommonLayer.Map> userMaps = new BL.Map().getUserMaps(User.Identity.Name);
foreach (var item in userMaps)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "MyFunction()", true);
}
return View(userMaps);
}
我做错了什么?视图代码没有调用 addMarket 函数,而 c# 代码不能从 foreach 内部调用,因为它不是静态的
【问题讨论】:
-
第一个应该可以工作\
-
第一个:您的
addMarker函数在您的视图中是否声明在foreach循环之上?您是否看到任何控制台错误? -
生成的 HTML/JS 长什么样?标题和描述周围有引号吗?
-
尝试使用单引号,例如:
addMarker('@item.Title'....) -
你正在混合服务器端和客户端代码,你确定这是你想要的吗?
标签: c# javascript asp.net-mvc asp.net-mvc-4