【问题标题】:MVC Partial View not hitting HTTP Post on controllerMVC 部分视图未在控制器上点击 HTTP Post
【发布时间】:2021-09-10 14:01:31
【问题描述】:

我有一个应该在控制器上运行 HttpPost 的局部视图,但事实并非如此。在我的主页上,我有以下部分视图

 <div class="box">
     @Html.Action("AddNote", "Member", new { MemberId = Model.Id })
 </div>

局部视图如下-

@model GMS.Core.Models.AddMemberNoteModel

@using (Html.BeginForm("AddNote", "Member", FormMethod.Post))
{
    @Html.HiddenFor(model => model.MemberId)

    <div class="input-group">
        @Html.EditorFor(model => model.Note, new { @class = "form-control", @placeholder = "Type note ..." })
    @Html.ValidationMessageFor(model => model.Note)

    <span class="input-group-btn">
        <input type="submit" class="btn btn-primary btn-flat" value="Save" />
    </span>
    </div>
}

问题是当提交按钮被按下时,HttpPost 方法没有被命中。当页面加载时,第一个 actionresult 被点击。

[Authorize]
    public ActionResult AddNote(string memberId)
    {
        AddMemberNoteModel model = new AddMemberNoteModel();

        model.MemberId = Convert.ToInt32(memberId);

        return PartialView("AddNote", model);
    }

    [HttpPost]
    public ActionResult AddNote(AddMemberNoteModel model)
    {
        model.DateCreated = DateTime.Now;
        model.CreatedBy = ((CustomPrincipal)HttpContext.User).Id;

        model.LastUpdated = DateTime.Now;
        model.LastUpdateBy = ((CustomPrincipal)HttpContext.User).Id;

        if (ModelState.IsValid)
        {
            _memberService.AddNote(model);

            this.TempData["Notification"] = "A note has been added.";

            return RedirectToAction("Details", "Member", new { id = model.MemberId });
        }
        else
        {
            return PartialView(model);
        }
    }

呈现的 HTML

 <form action="/Member/AddNote/7537" method="post"><input data-val="true" data-val-number="The field MemberId must be a number." data-val-required="The MemberId field is required." id="MemberId" name="MemberId" type="hidden" value="7537" /><div class="input-group">
<input class="text-box single-line" data-val="true" data-val-required="The Note field is required." id="Note" name="Note" type="text" value="" />
    <span class="field-validation-valid" data-valmsg-for="Note" data-valmsg-replace="true"></span>

        <span class="input-group-btn">
        <input type="submit" class="btn btn-primary btn-flat" value="Save" />
        </span>
    </div>
</form>

【问题讨论】:

  • POST 真的发生了吗?你的浏览器开发工具告诉你什么?
  • @mxmissile 没有发布。浏览器工具也没有错误。
  • 发布您渲染的 html。如果没有帖子发生,那么罪魁祸首必须在那里。
  • 我已经用呈现的 HTML 更新了帖子。
  • 也许用与另一个相同的 post 属性来装饰它[Authorize] public ActionResult AddNote(string memberId)

标签: asp.net-mvc


【解决方案1】:

这个问题的答案是我在另一个表单中嵌入了“添加备注”表单。

@(Html.BeginForm())
{
..........
@using (Html.BeginForm("AddNote", "Member", FormMethod.Post))
{
    @Html.HiddenFor(model => model.MemberId)

    <div class="input-group">
        @Html.EditorFor(model => model.Note, new { @class = "form-control", @placeholder = "Type note ..." })
    @Html.ValidationMessageFor(model => model.Note)

    <span class="input-group-btn">
        <input type="submit" class="btn btn-primary btn-flat" value="Save" />
    </span>
    </div>
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2015-12-06
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2016-01-24
    • 2017-04-14
    相关资源
    最近更新 更多