Javascript C#单击时未定义razor对象
我在index.cshtml中有以下代码,其中创建了FoursquareInfo对象Javascript C#单击时未定义razor对象,javascript,c#,jquery,asp.net-mvc,razor,Javascript,C#,Jquery,Asp.net Mvc,Razor,我在index.cshtml中有以下代码,其中创建了FoursquareInfo对象 @using WebMatrix.Data; @using CanYouPay.Models.FoursquareAPI; @{ FoursquareInfo fsInfo = new FoursquareInfo(); Checkins response = new Checkins(); Checkin checkins = new Checkin(); List<Ro
@using WebMatrix.Data;
@using CanYouPay.Models.FoursquareAPI;
@{
FoursquareInfo fsInfo = new FoursquareInfo();
Checkins response = new Checkins();
Checkin checkins = new Checkin();
List<RootItem> items = new List<RootItem>();
RootItem item = new RootItem();
Venue venue = new Venue();
Location loc = new Location();
loc.lat = 51.19189444478925;
loc.lng = 4.664656084372357;
venue.location = loc;
item.venue = venue;
items.Add(item);
checkins.items = items;
response.checkins = checkins;
fsInfo.response = response;
}
我的updateMap
函数是:
function updateMap(foursquareInfo) {
var uluru = { lat: 20, lng: 30 };
var map = new google.maps.Map(document.getElementById('googleMap'), {
zoom: 4,
center: uluru
});
var marker = new google.maps.Marker({
position: uluru,
map: map
});
}
是的,出于测试目的,我不会对传递的foursquareInfo
对象执行任何操作-当onClick
事件发生时,当我可以修复收到的错误时,lat
和long
值将替换为foursquareInfo
值:
在HTMLLevel上未定义CanYouPay。单击
我的html/razor/js代码有什么问题
根据我的评论:看起来你正试图将一个c#对象传递到你的js中-如果你在该按钮上查看源代码,它可能是一些文本,包括CanYouPay,由于你没有将其定义为js变量,它将抛出一个错误,你可能需要创建一个js对象并将你的c#对象值映射到它,或者穿过一串绳子 选项1创建一个与c#对象匹配的js对象,并在razor中映射值:
//这需要在onclick之前放在剃须刀中(所以在使用它之前创建对象)
var fsJSObject=新的fsJSObject();//此对象应与您的c#对象匹配
fsJSObject.StringValue='@fsInfo.StringValue';//这需要是最终值-例如字符串、int、date等-不能是另一个对象,否则会出现与上面类似的错误
fsJSObject.IntValue=@fsInfo.IntValue;
//将fsJSObject传递到onclick函数中
选项2,将值直接传递到函数中
onclick="updateMap('@fsInfo.StringValue', @fsInfo.IntValue, '@fsInfo.AnotherStringValue')"
根据我的评论,注意字符串值周围的引号:看起来您正试图将一个c#对象传递到js中-如果您在该按钮上查看源代码,它可能是一些文本,包括CanYouPay,并且由于您没有将其定义为js变量,它将抛出一个错误,您需要创建一个js对象并将c#对象值映射到它,或者传递一组字符串 选项1创建一个与c#对象匹配的js对象,并在razor中映射值:
//这需要在onclick之前放在剃须刀中(所以在使用它之前创建对象)
var fsJSObject=新的fsJSObject();//此对象应与您的c#对象匹配
fsJSObject.StringValue='@fsInfo.StringValue';//这需要是最终值-例如字符串、int、date等-不能是另一个对象,否则会出现与上面类似的错误
fsJSObject.IntValue=@fsInfo.IntValue;
//将fsJSObject传递到onclick函数中
选项2,将值直接传递到函数中
onclick="updateMap('@fsInfo.StringValue', @fsInfo.IntValue, '@fsInfo.AnotherStringValue')"
请注意字符串值周围的引号当我尝试使用razor构建同一页面时,我发现我的页面中有以下内容:
<div id="mapBtn" onclick="updateMap(WebApplication1.Models.FoursquareInfo)" class="btn btn-success btn-lg col-md-2 pull-right">Show Map!< /div>
显示地图!