jquery ASP.Net”;无效的表达式项';{';

本文关键字:表达式 无效 ASP Net jquery | 更新日期: 2023-09-27 18:26:56

我在ASP.Net mvc 5网站项目中使用jQuery。

这是我的代码

function loadTableWorkshops() {
  @foreach (var item in Model) {
    var row = jQuery("<tr></tr>").append("<td>" + item.title + "</td><td>" + item.date + "</td>");
    var deletebtn = jQuery("<a>Delete</a>").attr({
         "data-toggle": "modal",
         "data-target": "#myModal"})
       .addClass("delete")
       .click(function () { displayDeleteAlert(item.wid, item.title) });
    var detailsbtn = jQuery("<a>Details</a>").attr("href", "/TLCWS/myPlutonLocalhost/workshopDetails.php?wid=" + item.wid + "&wstitle=" + item.title)
        .addClass("details");
    ...
  } //foreach
} //function

我收到的错误是

CS1525: Invalid expression term '{'

它引用了这行代码

var deletebtn = jQuery("<a>Delete</a>").attr({

我试图在一行中初始化var deletebtn,但问题仍然存在。我确信jQuery被正确地包含在我的项目中,因为它在项目的其他地方和同一个文件中都能很好地工作。

jquery ASP.Net”;无效的表达式项';{';

当您使用@foreach .. {时,以下语句在}结束之前都是c#语句,但您将javascript/jquery语句放在了那里。

无需检查,您应该能够做到:

function loadTableWorkshops() {
    @foreach (var item in Model) {
      // item is server-side so needs @item
    <text>
      var row = jQuery("<tr></tr>").append("<td>" + @item.title + "</td><td>" + @item.date + "</td>");
      var deletebtn = jQuery("<a>Delete</a>").attr({
          "data-toggle": "modal",
          "data-target": "#myModal"})
        .addClass("delete")
        .click(function () { displayDeleteAlert(@item.wid, @item.title) });
      var detailsbtn = jQuery("<a>Details</a>").attr("href", "/TLCWS/myPlutonLocalhost/workshopDetails.php?wid=" + @item.wid + "&wstitle=" + @item.title)
        .addClass("details");
      ...
    </text>
    } //foreach
}

但是您可能需要完全重新思考如何生成动态html。

例如,您可以先将模型转换为javascript,然后使用纯js对其进行操作,例如:

function loadTableWorkshops() {
    var items = '@Model.ToString()';  // convert here, maybe use JSON if you haven't overridden ToString()
    items.each(function() {
      var item = this;
      var row = jQuery("<tr></tr>").append("<td>" + item.title + "</td><td>" + item.date + "</td>");
      var deletebtn = jQuery("<a>Delete</a>").attr({
          "data-toggle": "modal",
          "data-target": "#myModal"})
        .addClass("delete")
        .click(function () { displayDeleteAlert(item.wid, item.title) });
      var detailsbtn = jQuery("<a>Details</a>").attr("href", "/TLCWS/myPlutonLocalhost/workshopDetails.php?wid=" + item.wid + "&wstitle=" + item.title)
        .addClass("details");
      ...
    } //each
}

关键在于如何将Model转换为items——ToString不太可能足够,但应该会让你更接近。