在 Tag helper .net core 中设置默认值

Set default value in Tag helper .net core

我的页面中有 dropdown 列表,它使用 enum 列表进行绑定。

我的 enum 看起来像

  public enum PaymentType
    {
        /// <summary>
        /// The Cash
        /// </summary>
        Cash = 0,

        /// <summary>
        /// The Credit
        /// </summary>
        Credit = 1,

        /// <summary>
        /// The Debit
        /// </summary>
        Debit = 2
    }

我将此枚举绑定到下拉列表,如下所示

   <select class="select-text" id="paymentType"  asp-
for="PurchaseOrder.PaymentType" required asp-items="@(new 
SelectList(Model.PaymentTypes, "Id", "Name"))">

<option selected="selected" value ="">--Select payment type--</option>
   </select>

问题就像 PurchaseOrder.PaymentType 是一个整数字段,所以这里的默认值是 0,这使得我的 dropdown 总是 selected 到 Cash。我知道使 PurchaseOrder.PaymentType 可为空是一个选项,但我希望将其归档为不可空。

我已经厌倦了在 select 中添加 value="",也尝试在默认选项中添加 selected="selected",但没有任何效果。

谁能帮我用标签助手语法解决这个问题?

您需要 SelectList(IEnumerable, String, String, Object, String) 重载。

Initializes a new instance of the SelectList class by using the specified items for the list, the data value field, the data text field, a selected value, and the data group field.

例如在您的代码中:

SelectList(Model.PaymentTypes, "Id", "Name", 1)

既然您有 "blank" 选项,那么您的采购订单的 PaymentType 属性 应该可以为空。您可以在其上使用 [Required] 属性来强制用户必须实际提交一个值。

如果因为直接与实体 class 合作而无法这样做,请停止这样做。始终使用视图模型。