3

我的视图没有呈现打开和关闭 FORM 标记时遇到问题。下面是我的控制器的代码

    [HttpGet, Authorize]
    public ActionResult Edit(long id)
    {
        Position position = positionRepository.GetPositionById(id);
        return View(position);
    }

这是我认为的代码(省略控件代码)

@using (Html.BeginForm("Edit", "Position", new { area = "Stock", id = Model.PositionId }, FormMethod.Post, null)){}

当页面被调用时,它会呈现适当的数据,但 HTML 端不包括用于保存修改的打开和关闭 FORM 标记。关于我可能会丢失什么的任何线索?

在此处输入图像描述 在此处输入图像描述

4

4 回答 4

6

在一个类似的线程上,我发现另一个表单标签可能没有关闭,或者新的 BeginForm 正在另一个表单标签内呈现。

要快速验证,您可以</form>Html.BeginForm(...).

于 2015-07-29T22:53:04.443 回答
2

我发现根本原因是我的母版页。添加母版页时,我从 MVC3 列表中选择了一个标准母版页而不是一个!。我继续删除现有的母版页并添加了正确的母版页(来自 MVC3 列表)刷新了页面并且标签被正确呈现。

于 2011-09-29T16:55:06.713 回答
1

当视图中有局部视图时,在关闭前一个表单之前不会生成表单 ID。解决方案是对所有局部视图使用 BeginForm。当您有一个局部视图时,这将不起作用。诀窍是保持 2 个局部视图可能是仅用于表单关闭目的的虚拟局部视图。

于 2018-03-14T07:08:13.567 回答
0

为了进一步扩展这个问题,我发现 Html.BeginForm() 仅在您从父布局调用 @RenderBody() 时才有效。

我们部分视图中的所有内容都被分组到主定义的@sections 中。因此,我们只调用了@RenderPage() 和@RenderSection,而不是@RenderBody()。

一旦我们添加了对@RenderBody() 的调用,我们的表单标签就会出现(尽管我们的所有内容仍然在部分中定义,并且没有要呈现的“body”内容......)

希望这对其他人有帮助......我花了一段时间才弄清楚......这篇文章提供了最后的关键......

于 2012-02-24T20:03:57.780 回答