Day12 - 套用 Tag Helper - 复杂型别 object + object collection

接下来开始着重使用 Tag Helper 在 Html 长出需要的 Html 控制项 name !

本篇 Controller、ViewModel 跟 Day09 一样

依照 View 的差异,拆成不同 Case 来看 !


Case01

  • Controller

  • View

    使用 Tag Helper

    <form asp-action="Case01"
        method="post">
        <p>
            <label asp-for="OrderDate"></label>
            <input type="date"
                   asp-for="OrderDate" />
        </p>
        <div>
            <label asp-for="Items"></label>
            <table>
                <thead>
                <tr>
                    <th>
                        <label asp-for="Items.FirstOrDefault().Name"></label>
                    </th>
                    <th>
                        <label asp-for="Items.FirstOrDefault().Quantity"></label>
                    </th>
                </tr>
                </thead>
                <tbody>
                @for (int i = 0; i < Model.Items?.Length; i++)
                {
                    <tr>
                        <td>
                            <input type="text"
                                asp-for="Items[i].Name" />
                        </td>
                        <td>
                            <input type="number"
                                step=1
                                min=0
                                asp-for="Items[i].Quantity" />
                        </td>
                    </tr>
                }
                </tbody>
            </table>
    
        </div>
        <p>
            <button type="submit">送出</button>
        </p>
    </form>
    

输入资料 & Submit 後,View Render 出来的结果

<form action="/Day12/Case01" method="post">    <p>
        <label for="OrderDate">订单日期</label>
        <input type="date" id="OrderDate" name="OrderDate" value="2021-05-07">
    </p>
    <div>
        <label for="Items">订单项目</label>
        <table>
            <thead>
            <tr>
                <th>
                    <label for="Name">名称</label>
                </th>
                <th>
                    <label for="Quantity">数量</label>
                </th>
            </tr>
            </thead>
            <tbody>
                <tr>
                    <td>
                        <input type="text" id="Items_0__Name" name="Items[0].Name" value="b">
                    </td>
                    <td>
                        <input type="number" step="1" min="0" id="Items_0__Quantity" name="Items[0].Quantity" value="2">
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="text" id="Items_1__Name" name="Items[1].Name" value="c">
                    </td>
                    <td>
                        <input type="number" step="1" min="0" id="Items_1__Quantity" name="Items[1].Quantity" value="3">
                    </td>
                </tr>
                <tr>
                    <td>
                        <input type="text" id="Items_2__Name" name="Items[2].Name" value="d">
                    </td>
                    <td>
                        <input type="number" step="1" min="0" id="Items_2__Quantity" name="Items[2].Quantity" value="4">
                    </td>
                </tr>
            </tbody>
        </table>

    </div>
    <p>
        <button type="submit">送出</button>
    </p>
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8BeKebzmhD5Pmy2bGJRwhhKT8Kxj5cFT9TMWMe5MLg3hAZMQvqb7T2MN-fAXNlKuqMrFrAWmPJnMmBiBuDA9petFx_TTn_bQXytOG0TKwkg7CnhC44o112SHqQAJN7wsSXixA8jVjplVbvD6iEschHM">
</form>

再次强调
这个 Case 的缺点就是如果 index 不连续
则 index 不连续之後的资料,都会 Binding 失败 !


到这边先做个简单的整理:

当套用 Html Helper / Tag Helper,注意 Render 後的 Html 控制项 name,只要符合规则,在 Submit Form 後,後端进行 Model Binding 时,就不会有太大的问题 !


这篇先到这里,下一篇来看 动态 新增/删除 Collection 项目 !


<<:  设定IAM

>>:  Rust-变数

上帝掷硬币:猜猜正面还是反面

『经济学家萨谬森问同事是否愿意赌一次掷硬币,可以赢二百美元或输一百美元。同事说:「我不会赌,因为我对...

CSS Of Norton Antivirus By InstallNSetup.Com

Online threats, such as spyware, phishing and iden...

python 好用套件:利用 glob 抓取路径下档案名称

前言 今天这篇文章要分享我自己在抓取某个路径下所有档案时,很喜欢用的一个套件,觉得它使用弹性满高,有...

IT铁人DAY 1-进入物件导向世界前的心理准备

  在开始之前,还是很惊讶自己有天可以在这里写文章,分享自身所学的IT技术,提供给大家参考。那其实我...

Day.17 「如果基本型别是商品,那物件型别就是购物袋」 —— JavaScript 物件型别

前面有介绍了基本型别,基本型别有 string、number、boolean、null、undef...