【问题标题】:How can I replace a "Request" class method for ASP.NET Core View class?如何替换 ASP.NET Core 视图类的“请求”类方法?
【发布时间】:2016-08-14 00:11:34
【问题描述】:

我正在尝试将几个 View 类从 .NET 迁移到 .NET Core,但我遇到了缺少“请求”类方法的问题。

我的具体代码如下:

<form id="contactUs" method="post" action="@Request.Url.GetLeftPart(UriPartial.Authority)@Url.Action("ContactUsFormSubmit")" accept-charset="utf-8">

如何将 Request.Url.GetLeftPart(UriPartial.Authority) 部分替换为 .NET Core 语法?

.NET Core 中有没有更好的调用权限部分的方法?

【问题讨论】:

    标签: c# asp.net .net asp.net-core .net-core


    【解决方案1】:

    Request 现在可以在 Controller(来自基类)中以 Request 的形式找到,如果您在 MVC 视图中,则可以在 @Context.Request 找到。

    但是Request.Url 没有替代品,所以你需要自己制作:(见编辑)

    string.Concat(Request.Scheme, 
        "://", 
        Request.Host.ToUriComponent(), 
        Request.PathBase.ToUriComponent(), 
        Request.Path.ToUriComponent(),
        Request.QueryString.ToUriComponent())
    

    但在您的情况下,这似乎没有必要。你可以让浏览器处理相对路径...

    <form id="contactUs" method="post" action="@Url.Action("ContactUsFormSubmit")" accept-charset="utf-8">
    

    或者使用 MVC Core 原生方式(使用标签助手):

    <form asp-controller="MyController" asp-action="ContactUsFormSubmit" method="post">
    

    编辑:实际上Request.Url 有一个替代品:

    添加:using Microsoft.AspNetCore.Http.Extensions; 然后调用Request.GetDisplayUrl();...这将返回https://localhost/MyController/MyAction?Param1=blah

    【讨论】:

    • 老实说,我只是在迁移项目,不知道他们为什么决定这样做。这是一个精简的 Web 应用程序,用作 Web 表单。如此简单的标签助手对我来说也更有意义,但我会向我的经理询问获取权限 URL 的目的。他们专门在多个医学网站和主页中使用此表格。是否有任何理由获得授权网址?谢谢
    • @KemalTezerDilsiz 就像他们想指向绝对网址的...但我不知道他们为什么要这样做...
    • 我在同一个视图类中有另一段代码:&lt;script&gt; function loadjsfile(filename) { ... }; if (jQuery == undefined) loadjsfile("@Request.Url.GetLeftPart(UriPartial.Authority)/Scripts/jquery-1.11.2.min.js"); loadjsfile("@Request.Url.GetLeftPart(UriPartial.Authority)/Scripts/jquery.validate.min.js"); loadjsfile("@Request.Url.GetLeftPart(UriPartial.Authority)/Scripts/jquery.validate.unobtrusive.min.js"); &lt;/script&gt; 它可能相关吗?我怎么能代替这个?
    • @KemalTezerDilsiz 你正在寻找@Url.Content("~/Scripts/jquery-1.11.2‌​.min.js")
    猜你喜欢
    • 2017-11-13
    • 2020-07-20
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2021-02-15
    相关资源
    最近更新 更多