【问题标题】:ASP page links not available when passing through jQuery.html()通过 jQuery.html() 时 ASP 页面链接不可用
【发布时间】:2019-09-15 10:25:35
【问题描述】:

我正在学习一些基本的 ASP.net 开发作为一种爱好。我正在使用 jQuery.html() 来更新一个 div,其中包含指向 ASP 剃须刀页面的链接列表,但这些链接没有通过。

我创建了一个测试网络应用程序,并附加了一个 jQuery 函数。代码工作,div 填充,但 ASP 页面链接不活动。我无法找到任何关于此的具体内容,但由于我是该主题的新手,我的 Google-Fu 可能已关闭。

这是在 site.js 中运行的 jQuery 代码:

$(document).ready(function () {

    $("#testDiv").html(
        '<p>Page List:</p> <ul> <li> <a asp-area="" asp-page="/TestPage">TestPage</a></li></ul>'
    );

});

当它运行时,div 看起来像这样:

当我将js查询中引用的html代码直接复制到页面div中时:

<div class="row">
    <div id="testDiv">
        <p>Page List:</p> <ul> <li> <a asp-area="" asp-page="/TestPage">TestPage</a></li></ul>
    </div>
</div>

链接正常工作如下:

除了 ASP 直通代码之外,我还需要做些什么来使链接与 jQuery 一起工作吗?

【问题讨论】:

  • asp 代码必须在服务器上执行 - 然后 Razor C# 引擎可以将其转换为 HTML 以发送到浏览器。仅在某些 JavaScript 中将其硬编码为字符串是不允许这种情况发生的。如果您真的需要这样做,那么通过 Ajax 加载的局部视图可能是实现它的合适方法
  • 由于这只是一个爱好项目,因此没有具体的实施要求。我可能只是通过 html 链接来代替。感谢您的回答,大大提高了我的 ASP 知识。

标签: jquery asp.net-core


【解决方案1】:

正如 ADyson 在 cmets 中提到的,asp-page 属性是一个 Anchor Tag Helper,由 Razor 引擎呈现为适当的 HTML。这发生在服务器端。

您通过 jQuery 所做的事情发生在客户端。也就是说,没有可用的 Razor 引擎,因此它按原样渲染。剃刀锚标记助手在一天结束时将其值转换为有效的 HTML。

在 jQuery 中,您必须为链接设置正确的 HTML:

$(document).ready(function () {

    $("#testDiv").html(
        '<p>Page List:</p> <ul> <li> <a href="/TestPage">TestPage</a></li></ul>'
    );

});

【讨论】:

  • 感谢您提供的其他信息,我感谢它真正有帮助的链接。那是很多帮手:D
  • 当然是! Here's another link 有更多关于该主题的内容。
猜你喜欢
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多