我得到了无法隐式转换类型';对象';到';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; }
}

我得到了无法隐式转换类型';对象';到';system.guid';?存在显式转换(是否缺少强制

这是因为ArrayList不是泛型类,因此对它存储的数据一无所知。因为iObject,所以不能将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());
相关文章: