首页 > 解决方案 > 表单 POST 不做任何事情

问题描述

我有一个用 ASP.NET Core(最新版本)制作的 web 应用程序,它需要使用一个弹出表单,其中必须填写 1 个值,然后将其发送回控制器以稍后使用该值。

所以过程是这样的:按钮 > 点击按钮 > 弹出表单弹出(图片:弹出表单是部分视图) > 填写值 > 提交 > 将结果发送回控制器。

但是,每当我按下提交按钮时,它都会将我发送到 400 错误未找到页面。会出什么问题?

以下是部分视图弹出表单代码:

@model IEnumerable<ApplicationName.Models.Moederblad>
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, AuthoringTagHelpers
@Html.AntiForgeryToken()

<div id="element_to_pop_up">
    <a class="b-close">x</a>
    //Actionresult > Controller
    @using (Html.BeginForm("Incassodatum", "Moederblads", FormMethod.Post))
    {
        <br />
        <div class="row">
            <div class="col-md-6">
                <label for="Incassodatum">Incassodatum</label>
                <input class="form-control" placeholder="Bijvoorbeeld: 19-02-2020" type="text" data-val="true" data-val-regex="Dat is geen geldige datum" data-val-regex-pattern="^(0[1-9]|[12][0-9]|3[01])[/](0[1-9]|1[012])[/](19|20)[0-9]{2}$, " id="Incassodatum" name="Incassodatum">
            </div>
        </div>
        <div class="row">
        </div>
        <br>
        <input name="__RequestVerificationToken" type="submit" class="btn btn-primary submit" value="Toevoegen" id="submit">
    }
</div>

这是对应的控制器:

        [HttpGet]
        public ActionResult Incassodatum()
        {
            return View();
        }

        //Automatisch de datum van vandaag in het Incassodatum veld zetten nadat er op een knop is gedrukt
        [HttpPost, ValidateAntiForgeryToken]
        public ActionResult Incassodatum(string Incassodatum)
        {
            string date= "";
            if (ModelState.IsValid)
            {
                date = Incassodatum;
            }
            else
            {
                date = "Something went wrong.";
            }
            TempData["Incassodatum"] = $"{Incassodatum}";
            return RedirectToAction("Index");
        }

然后稍后我可以使用 tempdata 读出值,但它根本不起作用,所以现在实际上没用。

我尝试在帖子上方添加 [Route("Moederblads/Incassodatum")] 属性。我在普通视图中尝试过(所以不是局部视图),在那里我可以看到 F12 的值。尝试更改对象名称,因为我认为它可能与其他名称冲突。

不知道现在该怎么办。大家有猜想吗?

标签: c#asp.net.netasp.net-corerazor

解决方案


最后很简单:我只需要删除方法上方的 [HttpPost] 标记和 [HttpGet] 方法,因为它最终什么也没做。之后它达到了我的断点并且可以验证该值是否正常:)


推荐阅读