Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ASP.NET Core 3.0 Razor页面使用@url.Page为AJAX生成动态href url_Javascript_Jquery_Ajax_Asp.net Core_Razor Pages - Fatal编程技术网

Javascript ASP.NET Core 3.0 Razor页面使用@url.Page为AJAX生成动态href url

Javascript ASP.NET Core 3.0 Razor页面使用@url.Page为AJAX生成动态href url,javascript,jquery,ajax,asp.net-core,razor-pages,Javascript,Jquery,Ajax,Asp.net Core,Razor Pages,我有一个锚定标记,它通过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-co

我有一个锚定标记,它通过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>
razor页面(其中锚定标记为)命名为Area/Details/123456-45646-123132(其中123456-45646-123132是GUID)。问题是,我不想硬编码url,因为GUID可以更改

我试过了

href="@Url.Page("Area/Details/" + @Model.wItem.GUID,  "ShowDetails")"

但是在javascript中href为空。

您可以使用
href
属性来执行此操作。你说这对你不起作用,但你还没有表现出你的努力。使用
attr()
将获得所需的值。您似乎还试图在GET请求中发送JSON,但这并不完全正确,尤其是当您需要的数据已经在
href
URL中时

还请注意,应避免使用
onclick
和其他过时的事件属性。在使用jQuery时,您可以轻松地以不引人注目的方式附加事件处理程序

最后,
async:false
是非常糟糕的做法,不应该使用。在任何情况下都不需要它,因为您已经实现了
done()
方法。说了这么多,试试这个:


jQuery(函数($){
$('.nav link')。在('click',函数(e)上{
e、 preventDefault();//停止标准链接行为
$.ajax({
url:$(this.attr('href'),
键入:“GET”,
cache:false,
标题:{
RequestVerificationToken:$('input:hidden[name=“\uu RequestVerificationToken”]”)val()
}
}).完成(功能(结果){
$('#MainframeContents').html(结果);
});
});
});

我在这里发布解决方案;这比发表评论要好

我最初使用这个href:

href="@Url.Page("Area/Details/" + @Model.wItem.GUID,  "ShowDetails")">  
因为我使用的是Razor而不是MVC。 阅读MS doc()时,我注意到我使用的是区域,因此,正确的href应该是:

href='@Url.Page("Details", "ShowDetails",  new { area = "Area", position = item.Position, GUID = @Model.wItem.GUID })'
详细信息:是我的页面的名称

ShowDetails:是我的GET处理程序的名称

区域:是我所在区域的名称

位置和GUID:是我的GET处理程序的参数

结果href URL如下所示:

/en/Area/Details/4564646-1213-156416-45646-5464666?位置=1,处理器=显示详细信息

那叫我的处理人:

public async Task<IActionResult> OnGetShowDetailsAsync(string GUID, string position)
{
    ...
}
公共异步任务OnGetShowDetailsAsync(字符串GUID,字符串位置) { ... } 希望这能为其他人节省时间


感谢@Rory McCrossan的建议。

我已经复制并通过了您的代码,但是$(this).attr('href')未定义。我不使用async:false,而是使用async:true。我无法复制它,这个逻辑工作正常:。检查以确保您的HTML是有效的。我没有使用MVC,这就是为什么我使用页面而不是操作。我将检查html代码搜索为什么href在我的代码中未定义。啊,是的。对不起,我没看到标签
public async Task<IActionResult> OnGetShowDetailsAsync(string GUID, string position)
{
    ...
}