gpt4 book ai didi

javascript - 将 Razor 语法与 JavaScript 混合

转载 作者:行者123 更新时间:2023-11-30 17:43:18 26 4
gpt4 key购买 nike

在我的homecontroller 索引 View 页面上,我想在 Google map 上显示从数据库中提取的数据。所以,我所做的是将 model.cs 文件包含在 homecontroller.cs 文件中,并将整个数据库数据传递给 View ,方法是将其转换为列表并作为 Viewbag 对象。但是现在当我尝试根据数据库的数据在 map 上显示标记时,它没有显示。即使是简单的 javascript alert() 语句也不会在屏幕上显示任何内容。以下是代码:-

----------------EventsRegister.cs(模型页)------------

namespace CampusConnect.Models
{
public class EventReg
{
public int ID { get; set; }
public string UniqueId { get; set; }
public float Latitude { get; set; }
public float Longitude { get; set; }
public string Description { get; set; }
}

public class EventDBContext: DbContext
{
public DbSet<EventReg> Events { get; set; }
}
}

----------------Homecontroller.cs------------------------

namespace CampusConnect.Controllers
{


public class HomeController : Controller
{


private EventDBContext db = new EventDBContext();
private List<EventReg> list;

public ActionResult Index()
{
list = db.Events.ToList();
ViewBag.Message = "Please Register/Login to continue";
ViewBag.EntireList= list;
return View();
}
}
}

----------------Index.cshtml(Homecontroller的索引 View )----------------

@section bodyOrMap {
@if (Request.IsAuthenticated)
{
<text>
<div class="content-wrapper">

@*Google Maps included*@

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyC7TFDjCbI4A10H2J-f6zBFHToFQIs6Z2M&sensor=true"></script>
<script type="text/javascript">

function InitializeMap() {
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(29.8644, 77.8964);
var myOptions = {
disableDoubleClickZoom: true,
zoom: 17,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map"), myOptions);
@foreach (var item in ViewBag.EntireList)
{
<text>
alert(@item.Description); -------->THIS DOESN'T PRINT
</text>
}


var aListener = google.maps.event.addListener(map, 'dblclick', function (event) {
alert("Double click displays values" + event.latLng.lat() + " " + event.latLng.lng());

});
} //Initialise map function ends
window.onload = InitializeMap;

</script>

<div id="map" style="top: 0px; left: 0px; /*width: 500px;*/ height: 338px; position: relative; float: left; display: inline; width:49%">

</div>

</asp:Content>

</div>
</text>
}
else
{
//some HTML
}
}

map 已显示,但警报语句未打印。此外,double click 事件处理程序不起作用(尽管它以前在数据库中没有数据时起作用)。我检查了数据库,有一个表 Events.mdf,其中包含我输入的一行数据。

谁能告诉我问题出在哪里?我是 asp.net 编程的新手,所以这可能是一个小问题。谢谢。

最佳答案

很可能item.Description实际上并没有存储有效的 JavaScript 字符串,或者如果是,则它没有正确编码。例如,如果 item.Discription具有值 "Hello World!"然后是这个的渲染输出

alert(@item.Description);

会是这样的:

alert(Hello World!);

这显然不是有效的 javascript。

尝试这样的事情:

alert(@Html.Raw(Json.Encode(item.Description)));

此外,您不需要输入 <text>如果您像这样打印警报(这也是无效的 JavaScript):

@foreach (var item in ViewBag.EntireList)
{
@:alert(@Html.Raw(Json.Encode(item.Description)));
}

虽然,好像是那样<text>可能只是其他内容的一些占位符文本。

关于javascript - 将 Razor 语法与 JavaScript 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20626748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com