【问题标题】:ASP.NET Razor Pages Error: InvalidOperationException: Incorrect Content-TypeASP.NET Razor 页面错误:InvalidOperationException:不正确的内容类型
【发布时间】:2018-07-20 16:31:44
【问题描述】:

所以我对 ASP.NET Razor 比较陌生,我遇到了一个不知道如何修复的一致错误。我已经使用 Razor Pages 创建了一个 ASP.NET Core Web 应用程序 MVC。

我目前收到错误消息:InvalidOperationException: Incorrect Content-Type: Microsoft.AspNetCore.Http.Features.FormFeature.ReadForm() 当我加载项目时。它告诉我错误在email = Request.Form["email]; 行中

错误相关的文件:

@page
@model IndexModel
@{
ViewData["Title"] = "Login";

var email = "";
var pswd = "";
bool rem = false;

email = Request.Form["email"];
pswd = Request.Form["pswd"];
}
<div class="progress mt-5">
    <div class="progress-bar progress-bar-striped progress-bar-animated" 
style="width:40%"></div>
</div>
<br />
<div class="container mx-auto bg-warning" style="width:50%;">
    <h1 class="title" style="text-align:center">TestWebApp</h1>

    <form method="post" class="px-3 py-5">
        <div class="form-group input-group">
            <div class="input-group-prepend">
                <span class="input-group-text bg-primary border-0 text-light" style="width:100px">Email</span>
            </div>
            <input type="email" class="form-control" id="email" placeholder="Enter email" name="email" value="">
       </div>
    <div class="form-group input-group">
        <div class="input-group-prepend">
            <span class="input-group-text bg-primary border-0 text-light" style="width:100px">Password</span>
        </div>
        <input type="password" class="form-control" placeholder="Enter password" name="pswd" value="@pswd">
    </div>
    <div class="form-group form-check">
        <label class="form-check-label">
            <input class="form-check-input" type="checkbox" name="remember" value="@rem"> Remember me
        </label>
    </div>
    <button type="submit" class="btn btn-primary" name="submit">Submit</button>
</form>
</div>

奇怪的是我之前多次运行此代码,只是进行了与表单本身无关的小设计更改,它运行良好且没有错误,但现在开始显示此错误,我不知道如何修复它。非常感谢您的帮助。

【问题讨论】:

    标签: c# html asp.net razor


    【解决方案1】:

    我不知道Request 在您的代码中代表什么。因为您的页面中没有任何内容以这种方式命名。如果您在某处有某种快捷方式,我猜您会从模型中获取 Request 属性。所以你指的是PageModelRequest属性,因为你的模型IndexModel继承自PageModel而暴露。

    如果上述情况属实,那么我怀疑您在此处错误的地方使用了Request.Form

    您在那个时间点(即剃须刀引擎解析并呈现您的模板时)试图完成阅读Request.From 的目的是什么?请注意,那里还没有表格。因此,这可能就是您收到此类错误的原因。

    该错误可能具有误导性,因为您的代码在此过程中过早地处理了请求。您基本上是在强制引擎在没有任何内容时读取表单,并且弹出的异常告诉您表单没有 application/x-www-form-urlencodedmultipart/form-data 作为其 Content-Type 标头值。但同样,失败的主要原因是您在错误的地方使用了Request.Form

    也许您应该更好地解释您的最终目标是什么,以便我们更好地了解可能出了什么问题?

    希望这会有所帮助!

    【讨论】:

    • 我会尝试更改我放置Request.Form 位的位置,看看是否可行,谢谢。基本上我试图从表单中获取输入并将其保存在一个变量中,如果这有帮助的话。
    • 还有,如果放错地方了,应该放哪里?
    • @TobyKing 有趣的问题。这取决于您在哪里处理价值。如果您想在客户端获取电子邮件,请使用 javascript/jquery,就像您通常在 Web 开发中所做的那样。另一方面,如果您希望将电子邮件放在服务器端,也许要将其保存到数据库或类似的东西,您应该让您的模型将其作为属性公开,并通过模型绑定功能在发布时接收值。我能做的最好的就是将您指向此链接docs.microsoft.com/en-us/aspnet/core/razor-pages/…。从那里开始。
    猜你喜欢
    • 2018-07-18
    • 2021-11-29
    • 2020-07-09
    • 2021-07-27
    • 2020-01-29
    • 2016-08-25
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    相关资源
    最近更新 更多