3

Blazor vRC1

组件似乎有些微妙之处,EditForm在某些标记情况下它不会呈现其内容。例如,当将 an放置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>

我对后者很好,但是如果渲染引擎无法处理第一个示例,那么如果它会抛出某种错误来警告开发人员不支持这种情况,那就太好了。

4

2 回答 2

4

避免将form其作为 a 的子元素table。作为一种解决方法,您可以尝试添加 a<div>并在其中移动EditForm(尽管将div嵌套放在 form 中是不正确的),或者您可以将 form 放入 table cell(inside <td>tag) 中。

<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

于 2019-09-20T06:31:21.313 回答
2

当一个 EditForm 被放置在标签中时,什么也没有发生。

那是因为

<table>
  <EditForm Model="MyModel">
  </EditForm>
</table>

翻译成

<table>
  <form>
  </form>
</table>

Blazor 可以正常输出,但大多数浏览器不会呈现它。它是无效的 HTML。

像@NanYu<div>的回答一样,在表格周围加上 a 是一种技巧,但它似乎有效。将 a<form>放入 a<td>是完全有效的。

所以:不是 Blazor / Razor 问题,只是无效的 html。

如果它会抛出某种错误来警告开发人员不支持这种情况,那就太好了。

将所有(针对不同的浏览器)构建到 razor 引擎中将需要大量工作,而且似乎没有必要。

于 2019-09-20T14:41:45.890 回答