我有一个锚标记,在onclick上有一个javascript函数,调用我的方法通过Ajax更新页面。
页面显示订单的详细信息,ajax更新显示详细订单的位置。
问题是:如何动态生成和传递URL?
这是我的锚牌:
<a class="nav-link text-dark text-center p-0 collapsed"
data-toggle="collapse"
data-target="#Details"
aria-expanded="true"
aria-controls="Details"
href="@Url.Page("Area/Details/" + @Model.wItem.GUID, "ShowDetails")"
id="ShowDetails"
onclick="ShowDetailsAjax(this, '@Model.wItem.GUID')">
@item.Position
</a>
这是我的javascript函数:
function ShowPositionAjax(x, _GUID) {
var _url = '';
var _position = x.outerText;
var parameters = "{'position':'" + _position + "','GUID':'" + _GUID + "'}";
$.ajax({
url: _url,
type: 'GET',
cache: false,
async: true,
headers: {
RequestVerificationToken:
$('input:hidden[name="__RequestVerificationToken"]').val()
},
data: parameters
})
.done(function (result) {
$('#MainframeContents').html(result);
});
}
锚标签所在的剃须刀页面名为Area/Details/ 123456-45646-123132 (其中123456-45646-123132是GUID)。问题是,我不想硬编码url,因为GUID可以更改。
我试过了
href="@Url.Page("Area/Details/" + @Model.wItem.GUID, "ShowDetails")"
但是在javascript中,href是空的。
发布于 2019-11-27 07:31:04
我在这里发布了解决方案,它比评论要好。
最初我使用这个href:
href="@Url.Page("Area/Details/" + @Model.wItem.GUID, "ShowDetails")">
因为我使用的是Razor而不是MVC。阅读MS (https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/areas?view=aspnetcore-3.0)时,我注意到我使用的是区域,所以正确的href应该是:
href='@Url.Page("Details", "ShowDetails", new { area = "Area", position = item.Position, GUID = @Model.wItem.GUID })'
详细信息:是我的页面的名称
ShowDetails:是我的GET处理程序的名称
区域:是我所在地区的名字吗?
位置和GUID:是我的GET处理程序的参数。
结果href将类似于:
/en/Area/Details/45646546-1213-156416-45646-5464666?position=1&handler=ShowDetails
打电话给我的负责人:
public async Task<IActionResult> OnGetShowDetailsAsync(string GUID, string position)
{
...
}
希望这能为其他人节省时间。
感谢@Rory McCrossan给她的建议。
发布于 2019-11-27 05:53:17
您可以使用href
属性来完成此操作。你说它对你不起作用,但你却没有展示你试过的东西。使用attr()
将获得所需的值。您还试图在GET请求中发送JSON,这是不太正确的,特别是当您需要的数据已经在href
URL中时。
还要注意,您应该避免使用onclick
和其他事件属性,因为它们已经过时了。在使用jQuery时,您可以很容易地轻松地附加事件处理程序。
最后,async: false
是非常糟糕的实践,不应该使用。在任何情况下都不需要它,因为您已经实现了done()
方法。说了这么多,试试这个:
<a class="nav-link text-dark text-center p-0 collapsed"
data-toggle="collapse"
data-target="#Details"
aria-expanded="true"
aria-controls="Details"
href="@Url.Page("Area/Details/" + @Model.wItem.GUID, "ShowDetails")">
@item.Position
</a>
jQuery(function($) {
$('.nav-link').on('click', function(e) {
e.preventDefault(); // stop the standard link behaviour
$.ajax({
url: $(this).attr('href'),
type: 'GET',
cache: false,
headers: {
RequestVerificationToken: $('input:hidden[name="__RequestVerificationToken"]').val()
}
}).done(function(result) {
$('#MainframeContents').html(result);
});
});
});
发布于 2022-06-22 05:50:08
也许这会对某些人有所帮助,但最近版本的剃须刀允许将动态值从您的模型直接传递到url,并且在url的两侧。是的,这就像魔法.
<a class="nav-link" href='https://www.whatever.com/tracking?trackNumber=@Model.trackNumber&lang=EN' target="_blank" )"></a>
https://stackoverflow.com/questions/59071656
复制相似问题