在Tag helper .net核心中设置默认值

时间:2019-02-22 15:20:39

标签: c# asp.net-core asp.net-core-mvc asp.net-core-tag-helpers

我的页面中有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始终选择为Cash。我知道使PurchaseOrder.PaymentType可为空是一种选择,但我希望将字段设为不可为空。

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

有人可以通过标签帮助程序语法帮助我解决此问题吗?

2 个答案:

答案 0 :(得分:2)

由于您具有“空白”选项,因此采购订单的PaymentType属性应该可以为空。您可以在其上使用[Required]属性,以强制用户必须实际提交值。

如果由于直接使用实体类而无法执行此操作,请停止这样做。始终始终使用视图模型。

答案 1 :(得分:1)

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

  

通过使用以下命令初始化SelectList类的新实例:   列表,数据值字段,数据文本的指定项目   字段,选定值和数据组字段。

例如在您的代码中:

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