gpt4 book ai didi

c# - 为什么我的 PartialView 呈现在表单标签之外?

转载 作者:太空狗 更新时间:2023-10-30 01:04:04 28 4
gpt4 key购买 nike

我有一个显示“房间”对象的 HTML 表格的 View 。每个 Room 都是表中的一行(这是一个 PartialView)。

View 包含这段代码:

<table>

@foreach (var item in Model)
{
using (Html.BeginForm())
{
@Html.Partial("_roomPartial", item)
}
}

</table>

模型是一个 IEnumerable<Room> , _roomPartial 是包含房间属性的 HTML 行。

出于某种原因,Partial 的 HTML 在结束表单标记之后呈现(尽管在 using block 内):

<form action="/Room/Index" method="post"></form>
<tr>
...some boring markup...
</tr>

我尝试使这项工作成功的其他事情:

  • 用过Html.RenderPartial("_roomPartial", item);而不是 @Html.Partial .
  • 移动了 using (Html.BeginForm())在 PartialView 中阻止

我每次都得到相同的 HTML 结果。

为什么 Partial 渲染在 form 标签之外?我怎样才能让它正确呈现?


查看:

@model IEnumerable<PatientAssigner.Models.Room>

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>


<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.ID)
</th>
<th>
@Html.DisplayNameFor(model => model.isOccupied)
</th>
<th>
@Html.DisplayNameFor(model => model.patientComplexityLevel)
</th>
<th></th>
</tr>

@foreach (var item in Model)
{
using (Html.BeginForm())
{
@Html.Partial("_roomPartial", item)
}
}
</table>

_roomPartial:

@model PatientAssigner.Models.Room

<tr>
<td>
@Html.DisplayFor(room => room.ID)
@Html.HiddenFor(room => room.ID)
</td>
<td>
@Html.EditorFor(room => room.isOccupied)
@Html.ValidationMessageFor(room => room.isOccupied)
</td>
<td>
@Html.DropDownListFor(room => room.patientComplexityLevel,
new SelectList(Enum.GetValues(typeof(PatientAssigner.Models.PatientComplexityLevel)),
Model.patientComplexityLevel),
"")
@Html.ValidationMessageFor(room => room.patientComplexityLevel)
</td>
<td>
<input type="submit" value="Save" class="btn btn-default" id="saveBtn" />
</td>
</tr>

最佳答案

form 标签在 tabletr 标签之间无效。我建议将您的 View 更改为没有 trtd 标签并在外部执行此操作:

<table>

@foreach (var item in Model)
{
<tr><td>
@using (Html.BeginForm())
{
@Html.Partial("_roomPartial", item)
}
</td></tr>
}

</table>

如果您需要为每一行创建一个表单,但希望您的输入分布在多个单元格中,那么您唯一的选择是使用这样的嵌套表格:

<table>
<tr>
<td>
<form>
<table>
<tr>
<td>cell1</td>
<td>cell2</td>
<td>cell3</td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td>
<form>
<table>
<tr>
<td>cell1</td>
<td>cell2</td>
<td>cell3</td>
</tr>
</table>
</form>
</td>
</tr>
</table>

关于c# - 为什么我的 PartialView 呈现在表单标签之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24842418/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com