【问题标题】:The Guid Is not passed Correctly in MVC4?在 MVC4 中没有正确传递 Guid?
【发布时间】:2016-03-23 20:13:03
【问题描述】:

您好,GUID 未正确传递。

我的表格

客户

CustomerID uniqueidentifier primarykey 不为空,

显示名称 varchar(100)

打印名称 varchar(100)

客户地址表

CustomerAddressID uniqueidentifier primarykey 不为空,

客户 ID 唯一标识符为空,

AddressID uniqueidentifier null

地址

AddressID uniqueidentifier primarykey 不为空,

显示名称 varchar(100)

街道 varchar(100)

位置 varchar(100)

AreaID 唯一标识符为空,

密码 varchar(100)

我的模型

public class CustomerModel1
    {
        public System.Guid CustomerID { get; set; }
        public string DisplayName { get; set; }
        public string PrintName { get; set; }
}

public partial class CustomerAddressModel
    {
        public System.Guid CustomerAddressID { get; set; }
        public Nullable<System.Guid> CustomerID { get; set; }
        public Nullable<System.Guid> AddressID { get; set; }

   }

 public partial class AddressModel
    {
        public System.Guid AddressID { get; set; }
        public string DisplayName { get; set; }
        public string Street { get; set; }
        public string Location { get; set; }
        public Nullable<System.Guid> AreaID { get; set; }
        public string PinCode { get; set; }
   }

我的视图模型

   public class CustomerViewModel
   {
    public System.Guid CustomerID { get; set; }
    public string CustomerName { get; set; }
    public System.Guid CustomerAddressID { get; set; }
    public System.Guid AddressID { get; set; }
    public string Address { get; set; }
    public string Street { get; set; }
    public string Location { get; set; }
    public Nullable<System.Guid> AreaID { get; set; }
    public string PinCode { get; set; }
 }

public class VisitorsEntities1 : DbContext
{

public DbSet   Customer { get; set; }
public DbSet CustomerAddress { get; set; }
public DbSet Address { get; set; }
}

我的控制器

  public ActionResult Create()
    {
        VisitorsEntities1 db = new VisitorsEntities1();                    

 ViewBag.AreaID = new SelectList(db.Area, "AreaID", "DisplayName",   "PrintName");

   return View();
    }



    [HttpPost]
   public ActionResult Create(CustomerViewModel viewmodel)
    {

 ViewBag.AreaID = new SelectList(db.Area, "AreaID", "DisplayName",   viewmodel.AreaID);
       var Cusobj = Guid.NewGuid();
       var CusAddobj = Guid.NewGuid();
       var Addobj = Guid.NewGuid();


      var Customerobj = new Customer()
        {
            CustomerID = Cusobj,
        DisplayName = viewmodel.CustomerName,
        PrintName = viewmodel .CustomerName
   };


  var CustomerAddressobj = new CustomerAddress()
        {
            CustomerAddressID = CusAddobj,
            CustomerID = viewmodel.CustomerID,
            AddressID = viewmodel.AddressID
         };


      var Addressobj = new Address()
        {
            AddressID = Addobj,
            DisplayName= viewmodel.CustomerName,
            Street=viewmodel.Street,
            Location= viewmodel.Location,
            AreaID = viewmodel.AreaID,
            PinCode= viewmodel.PinCode
  };
     db.Customer.Add(Customerobj);
        db .CustomerAddress.Add(CustomerAddressobj );
        db.Address.Add(Addressobj);


   db.SaveChanges();


   return View()
 }

这里的 AreaID 是 SubForm 所以我使用 ViewBag 在视图中引入下拉菜单并传递 Guid。现在我的问题是客户地址表。

 var CustomerAddressobj = new CustomerAddress()
        {
            CustomerAddressID = CusAddobj,
            CustomerID = viewmodel.CustomerID,
            AddressID = viewmodel.AddressID
         };

Here CustomerAddressID is new Guid is working fine. But

   CustomerID = viewmodel.CustomerID,
   AddressID = viewmodel.AddressID

这两行的 Guid 未正确传递。在表中,这些列是 00000-0000-0000-0000 它没有显示任何错误,也没有正确传递 GUID。我不知道问题是什么。请任何人帮助解决这些问题?

错误

My Error

谢谢。

【问题讨论】:

  • viewmodel.CustomerID 和 viewmodel.AddressID 得到了什么?

标签: javascript c# jquery twitter-bootstrap asp.net-mvc-4


【解决方案1】:

尝试使用特殊属性在插入时自动生成 Guid 键。

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public System.Guid CustomerID  { get; set; }

这里Key 表示它是主键,DatabaseGenerated 指示自动生成关键字段

编辑

请注意,自动生成的身份字段仅在保存后才分配给新实体:

using (var db = new Context())
{
    var customer = new Customer();

    // Here customer.CustomerID is empty     

    db.Customers.Add(customer);
    db.SaveChanges();

    // Here customer.CustomerID is assigned
}

【讨论】:

  • 好的,我使用这个 var CustomerAddressobj = new CustomerAddress() { CustomerAddressID = CusAddobj, CustomerID = viewmodel.CustomerID, AddressID = viewmodel.AddressID };
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多