ASP.NET Core MVC:无法在表单标签内呈现字段

Posted

技术标签:

【中文标题】ASP.NET Core MVC:无法在表单标签内呈现字段【英文标题】:ASP.NET Core MVC : can't render fields inside form tag 【发布时间】:2022-01-23 08:38:45 【问题描述】:

我正在开发一项功能,该功能允许代理商检查和修改客户购买的库存。

基本上,它是引导模式内的更新表单,它位于另一个局部视图下的局部视图中。

起初,我尝试使用标签助手将我的视图模型与模态框内的表单绑定。比如:

<div class="modal-dialog modal-lg">
    <div class="modal-content">
        <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">Update Inventory</h5>
            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
        </div>
        <form id="UpdateForm" asp-controller="Home" asp-action="UpdateD" data-ajax-method="post" data-ajax="true" data-ajax-success="InsertSuccess"> 
            <div class="modal-body">                           
                <div class="mb-3 row">
                    <label asp-for="FieldExample" class="col-sm-2 col-form-label">FieldExample</label>
                    <div class="col-sm-10">
                        <input asp-for="FieldExample" class="form-control">
                    </div>
                </div>
            </div>
            <div class="modal-footer">                                                   
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
                <button type="submit" class="btn btn-primary">UpdateBtn</button>
            </div>
        </form>
    </div>
</div>

我检查了表单标签是否正确关闭,数据字段是否有效。

但表单结果显示没有我的字段,立即关闭,如下所示:

<form id="UpdateForm" data-ajax-method="post" data-ajax="true" data-ajax-success="InsertSuccess" action="/Home/UpdateD" method="post"></form>
<div class="modal-body">
 <div class="mb-3 row">
  <label class="col-sm-2 col-form-label" for="PLAN_TYPE">FieldExample</label>
  <div class="col-sm-10">
   <input class="form-control" type="text" id="FieldExample" name="FieldExample" value="test">
  </div>
 </div>
(...other fields)
 <div class="modal-footer">
  <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
  <button type="submit" class="btn btn-primary">UpdateBtn</button>
 </div>
 <input name="__RequestVerificationToken" type="hidden" value="...">
</div>

由于某种原因,表单不包含我的数据字段,我不知道是什么原因造成的。

即使我尝试使用带有测试字段的简单表单标签制作表单,表单仍然格式错误(内部没有字段)。

如果有人提出建议,我将不胜感激(对不起我的语言)

【问题讨论】:

你总是可以用老式(但可靠)手动action=""属性替换asp-标签助手属性使用IUrlHelper 检查控制台了解错误详情 【参考方案1】:

在这个问题上苦苦挣扎了几天,终于解决了这个问题,在&lt;partial&gt;上加了&lt;td&gt;&lt;/td&gt;

由于部分渲染在 &lt;table&gt; 中,但没有嵌套在 &lt;td&gt; 标记中。

将部分视图添加到&lt;td&gt; 标记似乎使语法在我的情况下更有效。部分视图中的表单将完美呈现其数据字段。

【讨论】:

以上是关于ASP.NET Core MVC:无法在表单标签内呈现字段的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 5 MVC:在模态窗口之前验证表单

asp.net core mvc 异步表单(Ajax.BeginForm)

ASP.NET Core 无法在 IIS 下运行:HTTP 错误 500.0 - ANCM 进程内处理程序加载失败

ASP.NET Core 无法在 IIS 下运行:HTTP 错误 500.0 - ANCM 进程内处理程序加载失败

ASP.net core MVC Framework 5 Formdata在附加图像时类型不正确

如何在 ASP.NET Core MVC 中使用 select 标签动态编辑数据库表?