c# – 我看到了奇怪的ActionLink行为,为什么浏览器中显示的url没有显示看似正确的控制器?

c# – 我看到了奇怪的ActionLink行为,为什么浏览器中显示的url没有显示看似正确的控制器?,第1张

概述我有以下ActionLink: @Html.ActionLink("Upload", "Upload", "File") 但当我将鼠标悬停在链接上时,浏览器中显示的URL为http:// localhost:44334 / Upload.这个网址中的控制器在哪里?奇怪的是,点击网址会将我带到我的文件/上传视图,但更奇怪的是,浏览器地址栏中显示的网址是https:// localhost:44334 我有以下Actionlink:
@HTML.Actionlink("Upload","Upload","file")

但当我将鼠标悬停在链接上时,浏览器中显示的URL为http:// localhost:44334 / Upload.这个网址中的控制器在哪里?奇怪的是,点击网址会将我带到我的文件/上传视图,但更奇怪的是,浏览器地址栏中显示的网址是https:// localhost:44334 / Upload.

Actionlink位于Home / Explorer页面上,因此通常需要AFAIK控制器名称.

为什么Actionlink助手会忽略控制器名称,为什么链接仍然有效?我尝试使用缓存清除刷新页面,没有区别.我不知道还有什么可以做,除了它可以工作,但我担心这是一些怪癖,当我部署我的网站时它将不再起作用.

在Startup类的Configure方法中,我的路由仍然是标准的,开箱即用的:

app.UseMvc(routes =>{    routes.MapRoute(        name: "default",template: "{controller=Home}/{action=Index}/{ID?}");});

奇怪的是,我现在已经在HTML文件表的每一行中添加了一个下载链接,如下所示:

@HTML.Actionlink("Download","Download","file",new { filePath = file.Path })

此链接也会在没有控制器名称的情况下呈现,例如:

https://localhost/Download?filePath=....
解决方法 在构建REST API时通常使用http {Verb}(“{{{{{{{{{{{{{{{{为了能够在使用属性路由时为默认MVC控制器生成URL,您需要使用Route属性.

原始控制器可能没有路由前缀,这意味着

//POST /Upload //<-- when there is no prefix on the controller[httpPost("Upload")]

在控制器上将路由到/上传没有控制器前缀.

通过在控制器上包含路由的前缀,它将在使用属性路由时生成URL时包含控制器名称.

[Route("[controller]"]public class fileController : Controller {    //POST file/Upload    [httpPost]    [Route("Upload")]    public async Task<ActionResult> Upload(Uploadfilesviewmodel model,IEnumerable<IFormfile> files) {        //...    }    //GET file/Download    [httpGet]    [Route("Download")]    public async Task<IActionResult> Download(string filePath) {        //...    }}

参考Routing in ASP.NET Core

参考Routing to Controller Actions

总结

以上是内存溢出为你收集整理的c# – 我看到了奇怪的ActionLink行为,为什么浏览器中显示的url没有显示看似正确的控制器?全部内容,希望文章能够帮你解决c# – 我看到了奇怪的ActionLink行为,为什么浏览器中显示的url没有显示看似正确的控制器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存