Blazor vRC1
EditForm
组件似乎有些微妙,在某些标记情况下它不会呈现其内容。例如,将EditForm
放置在<table>
标签内 内时,什么都不会发生。
<table>
<thead>...</thead>
<EditForm Model="MyModel">
@foreach(var item in MyModel.Items)
{
<tr><td>....</td></tr>
}
</EditForm>
</table>
不过,将<table>
和EditForm
包装在一起所有呈现的效果。
<EditForm Model="MyModel">
<table>
<thead>...</thead>
@foreach(var item in MyModel.Items)
{
<tr><td>....</td></tr>
}
</table>
</EditForm>
我对后者很好,但是如果渲染引擎无法处理第一个示例,那么如果它抛出某种错误来警告开发人员不支持这种情况,那就太好了。
答案 0 :(得分:2)
避免将form
作为table
的子元素。解决方法是,您可以尝试添加<div>
并将EditForm
移入其中(尽管将div
嵌套在form中是不正确的),也可以将表单放入表单元格中(内部<td>
标签)。
<table>
<thead>...</thead>
<div>
<EditForm Model="MyModel">
@foreach(var item in MyModel.Items)
{
}
</EditForm>
</div>
</table>
或:
<table>
<thead>...</thead>
<tr>
<td>
<EditForm Model="MyModel">
@foreach(var item in MyModel.Items)
{
}
</EditForm>
</td>
</tr>
</table>
但是,当然,最好将table
放在form
中。
答案 1 :(得分:1)
在标签中放置EditForm时,没有任何反应。
那是因为
<table>
<EditForm Model="MyModel">
</EditForm>
</table>
翻译成
<table>
<form>
</form>
</table>
Blazor可以输出此结果,但是大多数浏览器不会渲染它。这是无效的HTML。
像在@NanYu的答案中一样,在表单周围放置<div>
是一个hack,但它似乎可以工作。
因此:不是Blazor / Razor问题,只是无效的html。
如果抛出某种错误来警告开发人员不支持这种情况,那就太好了。
将所有工具(用于不同的浏览器)构建到剃须刀引擎中将需要大量工作,而且似乎没有必要。