【问题标题】:Set default value in Tag helper .net core在 Tag helper .net core 中设置默认值
【发布时间】:2019-02-22 23:30:30
【问题描述】:

我的页面中有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",但没有任何效果。

有人可以帮我用标签助手语法解决这个问题吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 好点,会这样做。让我让它可以为空并使用必需的属性。我没有直接使用实体类
    【解决方案2】:

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

    使用 列表的指定项、数据值字段、数据文本 字段、选定值和数据组字段。

    例如在您的代码中:

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

    【讨论】:

    • 你能举个例子吗?
    • 感谢您的帮助。使用了 Chris Pratt 提出的解决方案
    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 2020-03-08
    • 2016-04-10
    相关资源
    最近更新 更多