C# 在剑道UI网格中使用GUI

C# 在剑道UI网格中使用GUI,c#,asp.net-mvc,kendo-ui,kendo-grid,kendo-asp.net-mvc,C#,Asp.net Mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我正在asp.NETMVC中使用剑道UI网格,其中我有一个包含多个属性的模型。它的一个属性(Id)是Guid。每当我尝试在我的网格中创建新行,输入所有详细信息(Id由后端服务器自动生成)并按“更新”时,我都会收到一个错误,显示“Id字段是必需的”。有没有办法绕过这个问题 我怀疑Guid类型是这里引起问题的类型。 网格: 最后,模型 public class ToolModel { private ToolContract _toolContract; public ToolMo

我正在asp.NETMVC中使用剑道UI网格,其中我有一个包含多个属性的模型。它的一个属性(Id)是Guid。每当我尝试在我的网格中创建新行,输入所有详细信息(Id由后端服务器自动生成)并按“更新”时,我都会收到一个错误,显示“Id字段是必需的”。有没有办法绕过这个问题

我怀疑Guid类型是这里引起问题的类型。 网格:

最后,模型

public class ToolModel
{
    private ToolContract _toolContract;

    public ToolModel(ToolContract toolContract)
    {
        ToolContract = toolContract;
    }

    public ToolModel()
    {
    }

    private ToolContract ToolContract
    {
        get { return _toolContract ?? (_toolContract = new ToolContract()); }
        set { _toolContract = value; }
    }


    public double? Displace
    {
        get { return ToolContract.Displace; }
        set { ToolContract.Displace = value; }
    }


    public double? FishingNectOd
    {
        get { return ToolContract.FishingNectOD; }
        set { ToolContract.FishingNectOD = value; }
    }

    [ScaffoldColumn(false)]
    public Guid Id
    {
        get { return ToolContract.Id; }
        set { ToolContract.Id = value; }
    }

    public double? Length
    {
        get { return ToolContract.Length; }
        set { ToolContract.Length = value; }
    }

    public string Model
    {
        get { return ToolContract.Model; }
        set { ToolContract.Model = value; }
    }

    public string Name
    {
        get { return ToolContract.Name; }
        set { ToolContract.Name = value; }
    }

    public string Supplier
    {
        get { return ToolContract.Supplier; }
        set { ToolContract.Supplier = value; }
    }

    public string TagId
    {
        get { return ToolContract.TagId; }
        set { ToolContract.Supplier = value; }
    }

    [Display(Name = "Outer Diameter")]
    public double? ToolOd
    {
        get { return ToolContract.ToolOD; }
        set { ToolContract.ToolOD = value; }
    }

    public string Type
    {
        get { return ToolContract.Type; }
        set { ToolContract.Type = value; }
    }

    public double? Weight
    {
        get { return ToolContract.Weight; }
        set { ToolContract.Weight = value; }
    }
}

通过向网格中的ID字段添加默认值来解决:

@(Html.Kendo().Grid<ToolModel>()
      .Name("grid")
      .Columns(columns =>
      {
          columns.Bound(p => p.Id);
          columns.Bound(p => p.Displace);
          columns.Bound(p => p.FishingNeckOd);
          columns.Bound(p => p.Length);
          columns.Bound(p => p.Model);
          columns.Bound(p => p.Name);
          columns.Bound(p => p.Supplier).Width(150);
          columns.Bound(p => p.TagId);
          columns.Bound(p => p.ToolOd);
          columns.Bound(p => p.Type);
          columns.Bound(p => p.Weight);
          columns.Command(command => { command.Edit(); command.Destroy(); }).Width(180);
      })
      .ToolBar(toolbar => toolbar.Create())
      .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("ToolPopUpTemplate"))
      .Pageable()
      .Sortable()
      .Scrollable()
      .HtmlAttributes(new { style = "height:500px;" })
      .DataSource(dataSource => dataSource
          .Ajax()
          .PageSize(10)
          .Events(events => events.Error("error_handler"))
          .Model(model =>
          {
              model.Id(toolModel => toolModel.Id);
              model.Field(id => id.Id).DefaultValue(Guid.NewGuid());
          } )
          .Create(update => update.Action("EditingPopup_Create", "ToolManagement"))
          .Read(read => read.Action("EditingPopup_Read", "ToolManagement"))
          .Update(update => update.Action("EditingPopup_Update", "ToolManagement"))
          .Destroy(destroy => destroy.Action("EditingPopup_Destroy", "ToolManagement"))
      ))
@(Html.Kendo().Grid())
.名称(“网格”)
.列(列=>
{
columns.Bound(p=>p.Id);
columns.Bound(p=>p.Displace);
columns.Bound(p=>p.FishingNeckOd);
columns.Bound(p=>p.Length);
columns.Bound(p=>p.Model);
columns.Bound(p=>p.Name);
列.绑定(p=>p.Supplier).宽度(150);
columns.Bound(p=>p.TagId);
columns.Bound(p=>p.ToolOd);
columns.Bound(p=>p.Type);
columns.Bound(p=>p.Weight);
Command(Command=>{Command.Edit();Command.Destroy();}).Width(180);
})
.ToolBar(ToolBar=>ToolBar.Create())
.Editable(Editable=>Editable.Mode(GridEditMode.PopUp).TemplateName(“ToolPopUpTemplate”))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(新的{style=“height:500px;”})
.DataSource(DataSource=>DataSource
.Ajax()
.页面大小(10)
.Events(Events=>Events.Error(“错误处理程序”))
.Model(Model=>
{
model.Id(toolModel=>toolModel.Id);
model.Field(id=>id.id).DefaultValue(Guid.NewGuid());
} )
.Create(update=>update.Action(“编辑弹出窗口_创建”,“工具管理”))
.Read(Read=>Read.Action(“编辑弹出窗口_Read”,“工具管理”))
.Update(Update=>Update.Action(“编辑弹出窗口更新”、“工具管理”))
.Destroy(Destroy=>Destroy.Action(“编辑弹出窗口_Destroy”,“工具管理”))
))

通过向网格中的ID字段添加默认值来解决:

@(Html.Kendo().Grid<ToolModel>()
      .Name("grid")
      .Columns(columns =>
      {
          columns.Bound(p => p.Id);
          columns.Bound(p => p.Displace);
          columns.Bound(p => p.FishingNeckOd);
          columns.Bound(p => p.Length);
          columns.Bound(p => p.Model);
          columns.Bound(p => p.Name);
          columns.Bound(p => p.Supplier).Width(150);
          columns.Bound(p => p.TagId);
          columns.Bound(p => p.ToolOd);
          columns.Bound(p => p.Type);
          columns.Bound(p => p.Weight);
          columns.Command(command => { command.Edit(); command.Destroy(); }).Width(180);
      })
      .ToolBar(toolbar => toolbar.Create())
      .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("ToolPopUpTemplate"))
      .Pageable()
      .Sortable()
      .Scrollable()
      .HtmlAttributes(new { style = "height:500px;" })
      .DataSource(dataSource => dataSource
          .Ajax()
          .PageSize(10)
          .Events(events => events.Error("error_handler"))
          .Model(model =>
          {
              model.Id(toolModel => toolModel.Id);
              model.Field(id => id.Id).DefaultValue(Guid.NewGuid());
          } )
          .Create(update => update.Action("EditingPopup_Create", "ToolManagement"))
          .Read(read => read.Action("EditingPopup_Read", "ToolManagement"))
          .Update(update => update.Action("EditingPopup_Update", "ToolManagement"))
          .Destroy(destroy => destroy.Action("EditingPopup_Destroy", "ToolManagement"))
      ))
@(Html.Kendo().Grid())
.名称(“网格”)
.列(列=>
{
columns.Bound(p=>p.Id);
columns.Bound(p=>p.Displace);
columns.Bound(p=>p.FishingNeckOd);
columns.Bound(p=>p.Length);
columns.Bound(p=>p.Model);
columns.Bound(p=>p.Name);
列.绑定(p=>p.Supplier).宽度(150);
columns.Bound(p=>p.TagId);
columns.Bound(p=>p.ToolOd);
columns.Bound(p=>p.Type);
columns.Bound(p=>p.Weight);
Command(Command=>{Command.Edit();Command.Destroy();}).Width(180);
})
.ToolBar(ToolBar=>ToolBar.Create())
.Editable(Editable=>Editable.Mode(GridEditMode.PopUp).TemplateName(“ToolPopUpTemplate”))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(新的{style=“height:500px;”})
.DataSource(DataSource=>DataSource
.Ajax()
.页面大小(10)
.Events(Events=>Events.Error(“错误处理程序”))
.Model(Model=>
{
model.Id(toolModel=>toolModel.Id);
model.Field(id=>id.id).DefaultValue(Guid.NewGuid());
} )
.Create(update=>update.Action(“编辑弹出窗口_创建”,“工具管理”))
.Read(Read=>Read.Action(“编辑弹出窗口_Read”,“工具管理”))
.Update(Update=>Update.Action(“编辑弹出窗口更新”、“工具管理”))
.Destroy(Destroy=>Destroy.Action(“编辑弹出窗口_Destroy”,“工具管理”))
))

它是必需的,因为它是一种值类型,“默认情况下”所有值类型都是必需的。因此,您需要在发布结果之前为其指定一个值。如果您说要在代码中生成GUID,则在添加行时,自动添加空GUID的值:
00000000-0000-0000-0000-000000000000
。无论如何,您都将覆盖该值…它是必需的,因为它是一种值类型,并且“默认情况下”所有值类型都是必需的。因此,您需要在发布结果之前为其指定一个值。如果您说要在代码中生成GUID,则在添加行时,自动添加空GUID的值:
00000000-0000-0000-0000-000000000000
。您仍将覆盖该值。。。
public class ToolModel
{
    private ToolContract _toolContract;

    public ToolModel(ToolContract toolContract)
    {
        ToolContract = toolContract;
    }

    public ToolModel()
    {
    }

    private ToolContract ToolContract
    {
        get { return _toolContract ?? (_toolContract = new ToolContract()); }
        set { _toolContract = value; }
    }


    public double? Displace
    {
        get { return ToolContract.Displace; }
        set { ToolContract.Displace = value; }
    }


    public double? FishingNectOd
    {
        get { return ToolContract.FishingNectOD; }
        set { ToolContract.FishingNectOD = value; }
    }

    [ScaffoldColumn(false)]
    public Guid Id
    {
        get { return ToolContract.Id; }
        set { ToolContract.Id = value; }
    }

    public double? Length
    {
        get { return ToolContract.Length; }
        set { ToolContract.Length = value; }
    }

    public string Model
    {
        get { return ToolContract.Model; }
        set { ToolContract.Model = value; }
    }

    public string Name
    {
        get { return ToolContract.Name; }
        set { ToolContract.Name = value; }
    }

    public string Supplier
    {
        get { return ToolContract.Supplier; }
        set { ToolContract.Supplier = value; }
    }

    public string TagId
    {
        get { return ToolContract.TagId; }
        set { ToolContract.Supplier = value; }
    }

    [Display(Name = "Outer Diameter")]
    public double? ToolOd
    {
        get { return ToolContract.ToolOD; }
        set { ToolContract.ToolOD = value; }
    }

    public string Type
    {
        get { return ToolContract.Type; }
        set { ToolContract.Type = value; }
    }

    public double? Weight
    {
        get { return ToolContract.Weight; }
        set { ToolContract.Weight = value; }
    }
}
@(Html.Kendo().Grid<ToolModel>()
      .Name("grid")
      .Columns(columns =>
      {
          columns.Bound(p => p.Id);
          columns.Bound(p => p.Displace);
          columns.Bound(p => p.FishingNeckOd);
          columns.Bound(p => p.Length);
          columns.Bound(p => p.Model);
          columns.Bound(p => p.Name);
          columns.Bound(p => p.Supplier).Width(150);
          columns.Bound(p => p.TagId);
          columns.Bound(p => p.ToolOd);
          columns.Bound(p => p.Type);
          columns.Bound(p => p.Weight);
          columns.Command(command => { command.Edit(); command.Destroy(); }).Width(180);
      })
      .ToolBar(toolbar => toolbar.Create())
      .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("ToolPopUpTemplate"))
      .Pageable()
      .Sortable()
      .Scrollable()
      .HtmlAttributes(new { style = "height:500px;" })
      .DataSource(dataSource => dataSource
          .Ajax()
          .PageSize(10)
          .Events(events => events.Error("error_handler"))
          .Model(model =>
          {
              model.Id(toolModel => toolModel.Id);
              model.Field(id => id.Id).DefaultValue(Guid.NewGuid());
          } )
          .Create(update => update.Action("EditingPopup_Create", "ToolManagement"))
          .Read(read => read.Action("EditingPopup_Read", "ToolManagement"))
          .Update(update => update.Action("EditingPopup_Update", "ToolManagement"))
          .Destroy(destroy => destroy.Action("EditingPopup_Destroy", "ToolManagement"))
      ))