为什么 "IsPost" 和 "AsPost" 下划线是红色的?

Why is the "IsPost" and "AsPost" underlined red?

我正在尝试编写数据库查询程序,但 "IsPost" 和 "AsPost" 下方总是有一条红线。 我需要做什么才能使其正常工作?

感谢您的帮助:)

@page
@model AboutModel
@{
ViewData["Title"] = "Datenverzeichnis";
}
<h2>@ViewData["Title"]</h2>
<form method="post">
@{
if (IsPost)
{
    string materialnumber = Request.Form["materialnumber"];
    int serialnumber = Request.Form["serialnumber"].AsInt();
    <text>
        You entered: <br />
        Material Number: @materialnumber <br />
        Serial Number: @serialnumber <br />
    </text>
}
}
<p>
<div>
    <label for="text">Materialnummer</label>
    <input type="text" id="matn">
    <label for="text">ID</label>
    <input type="text" id="id">
</div>
<div>
    <input type="submit" value="Bestätigen" class="submit" />
    <button type="button" id="clear" 
onclick="document.getElementById('matn').value = '';

document.getElementById('id').value = ''">
        Löschen
    </button>
</div>
</p>

@{
<table>
<thead>
    <tr>
        <td width="5%">MaterialNumber</td>
        <td width="5%">SerialNumber</td>
        <td width="10%">Source</td>
        <td width="30%">Name</td>
        <td width="10%">Status</td>
        <td width="20%">URL</td>
    </tr>
</thead>
<tbody>
    @{
        foreach (var deviceInfo in Model.DeviceInfos)
        {
            <tr>
                <td>@deviceInfo.MaterialNumber</td>
                <td>@deviceInfo.SerialNumber</td>
                <td>@deviceInfo.Source</td>
                <td>@deviceInfo.Name</td>
                <td>@deviceInfo.Status</td>
                <td>@deviceInfo.Url</td>
            </tr>
        }
    }
</tbody>
</table>
}
</form>

That is the updated version with the whole code. I hope that you can figure it out this way. "CS0103 C# The name does not exist in the current context" that is the shown error code.

不清楚为什么要知道请求在实际视图中是否是POST。您可以使用 HttpContext.Request.Method。以下代码可能对您有用:

    if (this.Context.Request.Method == "POST")
    {
        string materialnumber = this.Context.Request.Form["materialnumber"];
        string serialnumber = this.Context.Request.Form["serialnumber"];
        <text>
            You entered: <br />
            Material Number: @materialnumber <br />
            Serial Number: @serialnumber <br />
        </text>
    }

另一种方法是在发布时在控制器中设置一个值。这样的事情可能会奏效:

[HttpPost]        // --> this is a POST request
public IActionResult MyAction()
{
    ViewBag.IsPost = true;

    return View();
}

那么在你看来:

if (ViewBag.IsPost)
{
    string materialnumber = Request.Form["materialnumber"];
    string serialnumber = Request.Form["serialnumber"];
    <text>
        You entered: <br />
        Material Number: @materialnumber <br />
        Serial Number: @serialnumber <br />
    </text>
}