我可以让 jQuery 读取 ASP.NET Core 2.1 的标签助手吗?似乎完全无视他们

Posted

技术标签:

【中文标题】我可以让 jQuery 读取 ASP.NET Core 2.1 的标签助手吗?似乎完全无视他们【英文标题】:Can I make jQuery read tag helpers of ASP.NET Core 2.1 ? Seems it's completely ignoring them 【发布时间】:2020-05-11 16:34:28 【问题描述】:

jQuery 可以读取 asp-for 标签助手和asp-action 吗?从我所见,似乎只是忽略了他们,我该如何解决这个问题或解决它? (我不能改变 jQuery 方法)。

伙计们,我能做什么?有没有办法做我想做的事:显示这些元素,同时在数据库中保存一些值(注意我必须附加多个元素)?

$('#results').append('<form method="post"><div class="item  col-xs-4 col-lg-4">'
                    + '<div class="thumbnail">'
                    + '<iframe   allowfullscreen src="https://www.youtube.com/embed/' + id + '"></iframe>'
                    + '<div class="caption">'
                    + '<p class=" group inner list-group-item-text" style="overflow:hidden;text-overflow:elipsis;white-space:nowrap;">' + vidTitle + '</p>'
                    + '<div class="row">'
                    + '<input type="text" value="' + id + '" asp-for="Input.vLink" hidden />'
                    + '<input type="text" value="' + vidTitle + '" asp-for="Input.vLink" hidden />' 
                    + '<div class="col-xs-12 col-md-6">'
                    + '<button asp-action="AddToPlaylist" type="submit" asp-route-vLink="' + id + '"asp-route-vTit="' + vidTitle + '" id="' + vidTitle + '" data-key="' + id + '" class="btn btn-success" onclick="AddToPlaylist()">Add to Playlist</button>'
                    + '</div></div></div></div></div></form>');
            )

 $('#playlist').append('<form method="post"><div">'
                + '<input type="text" value="' + id + '" asp-for="Input.vLink" hidden />'
                + '<input type="text" value="' + vidTitle + '" asp-for="Input.vLink" hidden />'
                + '<div class="list-inline"><li style="width:89%;overflow:hidden;text-overflow:elipsis;white-space:nowrap;list-style-type:none;">' +
                VideoTitulli + '  ' + id
                +'</li>'+' '+'<button value="' + id + '" style="border-radius:10px" class="fas fa-times" asp-action="RemoveFromPlaylist" asp-route-vLink="' + id + '"asp-route-vTit="' + vidTitle + '" onclick="RemoveFromPlaylist()"></button></div><hr class="hrC" /></div</form>')

.net 核心操作

public async Task AddToPlaylist(string userId)

    var userplaylist = new UserPlaylist()  ResultTitles = Input.vTit,ResultLinks = Input.vLink, ApplicationUserId = userId;
    _context.UPlaylist.AddAsync(userplaylist);
    await _context.SaveChangesAsync();


public async Task RemoveFromPlaylist(string userId)

    var userplaylit = new UserPlaylist()  ResultTitles = Input.vTit, ResultLinks = Input.vLink, ApplicationUserId = userId ;
   _context.UPlaylist.Remove(userplaylit);
    await _context.SaveChangesAsync();

【问题讨论】:

您误解了客户端代码和服务器端代码之间的区别。像asp-action="AddToPlaylist" 这样的东西对客户端没有任何意义。它们在服务器端用于生成发送到客户端的结果标记/代码。打开浏览器的调试工具,观察页面上的实际内容。 【参考方案1】:

这不起作用,标签助手运行服务器端为客户端生成 html。 JQuery 看不到这些 Tag Helpers。

如果您使用标签助手运行 HTML 并查看生成的代码,您会发现没有 asp- 属性,只有标签助手为您生成的 HTML。

因此,如果您想将 HTML 添加到页面,则需要手动进行。

有关标签助手的更多信息:

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/intro?view=aspnetcore-3.1

【讨论】:

以上是关于我可以让 jQuery 读取 ASP.NET Core 2.1 的标签助手吗?似乎完全无视他们的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 和...YUI? jQuery?其他

如何让 jQuery 验证生成与服务器端 ASP .NET MVC 验证相同的标记?

无法让 Jquery datepicker 在我的 asp.net mvc 项目中工作

ASP.NET jQuery 问题

ASP.NET WebAPI和带有大型数据集的jQuery(json)

检测页面刷新 jQuery 或 C# ASP.Net