我得到了无法隐式转换类型';对象';到';system.guid';?存在显式转换(是否缺少强制
本文关键字:显式转换 存在 是否 guid 对象 转换 类型 system | 更新日期: 2023-09-27 18:25:58
我的控制器
嗨,我无法将类型对象隐式转换为system.guid?在行taxinfotaxfiled.TaxFieldID=i中存在显式转换(是否缺少强制转换?)错误。特别是在"i"中,请有人给我解决方案吗?
public ActionResult Create(TaxInfoTaxFiled taxinfotaxfiled)
{
ArrayList Alist = new ArrayList();
{
Alist.Add("FD713788-B5AE-49FF-8B2C-F311B9CB0CC4");
Alist.Add("FD713788-B5AE-49FF-8B2C-F311B9CB0CC4");
Alist.Add("64B512E7-46AE-4989-A049-A446118099C4");
Alist.Add("376D45C8-659D-4ACE-B249-CFBF4F231915");
Alist.Add("59A2449A-C5C6-45B5-AA00-F535D83AD48B");
Alist.Add("03ADA903-D09A-4F53-8B67-7347A08EDAB1");
Alist.Add("2F405521-06A0-427C-B9A3-56B8931CFC57");
}
if (ModelState.IsValid)
{
taxinfotaxfiled.TaxInfoTaxFieldID = Guid.NewGuid();
foreach (var i in Alist)
{
taxinfotaxfiled.TaxFieldID = i.Value;
}
db.TaxInfoTaxFileds.Add(taxinfotaxfiled);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(taxinfotaxfiled);
}
我的型号
public partial class TaxInfoTaxFiled
{
public System.Guid TaxInfoTaxFieldID { get; set; }
public Nullable<System.Guid> TaxInfoID { get; set; }
public Nullable<System.Guid> TaxFieldID { get; set; }
public Nullable<System.Guid> FieldTypeID { get; set; }
public string FieldValue { get; set; }
}
public partial class TaxField
{
public System.Guid TaxFieldID { get; set; }
public string DisplayName { get; set; }
public string PrintName { get; set; }
}
这是因为ArrayList
不是泛型类,因此对它存储的数据一无所知。因为i
是Object
,所以不能将Object
隐式转换为Guid
。正如错误消息所示,您可以使用显式强制转换,如taxinfotaxfiled.TaxFieldID = (Guid)i
中所示。它可能不起作用,因为您的ArrayList实际上包含字符串,而不是Guid,在这种情况下,您要么需要更改将ArrayList
填充为的方式
Alist.Add(Guid.Parse(<value>));
或者将您从ArrayList
获得值的方式替换为:
taxinfotaxfiled.TaxFieldID = Guid.Parse(i.ToString());
或者,更好的是,将ArrayList
替换为泛型类List<Guid>
,在这种情况下,集合将知道它所包含的对象的类型,并且不需要任何强制转换。
更改行
taxinfotaxfiled.TaxFieldID = i.Value;
到此
taxinfotaxfiled.TaxFieldID = new Guid(i.Value.ToString());
您需要用以下代码替换您的代码:
Alist.Add(Guid.Parse("FD713788-B5AE-49FF-8B2C-F311B9CB0CC4"));
你的其他指导也是如此。使用List<Guid>
而不是ArrayList
可能也是一个更好的主意。
使用这个:
Guid.Parse(((Telerik.Windows.Controls.GridView.GridViewCell)e.Row.Cells[cellIndex]).Value.ToString());