我可以让 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 项目中工作