【问题标题】:Error validaing new data while updating gridview row data in asp.net web form?在 asp.net Web 表单中更新 gridview 行数据时验证新数据时出错?
【发布时间】:2014-01-31 20:59:36
【问题描述】:

我正在使用 asp.net 创建简单的 Web 表单应用程序,以便使用实体框架注册患者数据。我正在使用动态数据字段来轻松验证基于 Microsoft Sql Server 数据类型和 null 允许的可编辑数据

我的实体数据源和数据网格视图的 Aspx 代码是

<asp:EntityDataSource ID="EntityDataSource1" runat="server" ContextTypeName="WebApplication4.PediatricDbEntities" EnableDelete="True" EnableFlattening="False" EnableInsert="True" EnableUpdate="True" EntitySetName="Patients" EntityTypeFilter="Patient">
    </asp:EntityDataSource>
    <br />
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="PatientID" DataSourceID="EntityDataSource1">
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
            <asp:DynamicField DataField="PatientID" HeaderText="PatientID" ReadOnly="True" SortExpression="PatientID" />
            <asp:DynamicField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:DynamicField DataField="BirthDate" HeaderText="BirthDate" SortExpression="BirthDate" />
            <asp:DynamicField DataField="Sex" HeaderText="Sex" SortExpression="Sex" />
            <asp:DynamicField DataField="Location" HeaderText="Location" SortExpression="Location" />
            <asp:DynamicField DataField="Phone" HeaderText="Phone" SortExpression="Phone" />
        </Columns>
    </asp:GridView>
    <asp:ValidationSummary ID="ValidationSummary1" runat="server" />

背后的CS代码

protected void Page_init(object sender, EventArgs e)
    {
        GridView1.EnableDynamicData(typeof(Patient));
    }

但是,当我尝试编辑数据并设置不允许 null 到 null 值的字段时,在验证摘要出现之前出现错误,如下所示

我想知道如何在使用动态字段更新数据网格视图行时验证新数据。

【问题讨论】:

    标签: c# asp.net entity-framework


    【解决方案1】:

    这可以通过针对您的对象设置MetadataTypes 来完成。

    以名称字段为例..

      [MetadataType(typeof(PatientMetadata))]
      public partial class Patient
      {
        public class PatientMetadata
        {
          [Required]
          public string Name { get; set; }
    
          ....
    
        }
      }
    

    此处提供了演练:

    http://msdn.microsoft.com/en-us/library/cc488549(VS.100).aspx

    【讨论】:

    • 根据本教程asp.net/web-forms/tutorials/getting-started-with-ef/… 动态数据功能可以提供以下好处: 字段会根据其数据类型自动格式化以进行显示。字段会根据其数据类型自动验证。所以我上面的代码应该可以在不添加元数据的情况下工作,因为动态字段是根据数据类型自动验证的,我只需要添加元数据来自定义格式和验证行为。
    • 好点,我使用它已经有一段时间了,因为我主要做 MVC,但是当我使用它时,我总是创建元数据。我不记得它自动为我工作。
    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多