更新项目时如何保留相同的文件名?

时间:2017-05-06 18:06:20

标签: c# asp.net-mvc code-first

我创建模型来存储上传后的图像名称,但是图像来自Base64,所以我将其转换为图像文件,当我创建新图像时没有问题但是当更新或检索图像列表时我遇到了问题 这是我的模特课

    public class User
{


    public int UserId { get; set; }
    private bool Addnew;

    [NotMapped]
    [ScriptIgnore]
    public string ImageFileName { get; set; }
    [NotMapped]
    public bool IsNewItem { get { return Addnew; } set { this.Addnew = value; } }
    public string UserImage
    {
        get { return this.ImageFileName; }
        set { this.ImageFileName = CreateImage(value); }
    }
    private string CreateImage(string value)
    {
        if (IsNewItem)
        {
            return new CreateFile().SetData(this.ImageFileName, value).Image();
        }

        return value;
    }
}

CreateFile()将图像名称转换为图像文件后返回图像名称 如果this.ImageFileName为null,则返回新文件名,如204250210368cda45-b8e3-4aea-ad5c-1e224ff16933.png

这是用户控制器

    public JsonResult Create(User user)
    {
        if (ModelState.IsValid)
        {
            user.IsNewItem = true;
            db.Users.Add(user);
            db.SaveChanges();
            return Json(new
            {
                success = true,
                data = ""
            }, JsonRequestBehavior.AllowGet);

        }

        return Json(new
        {
            success = false,
            errors = JsonyErrorHelper.MessageToJsonError(ModelState)
        });

    }

1 个答案:

答案 0 :(得分:0)

通过重构模型以在适当的情况下将支持字段转换为自动属性,看起来您的问题就是这一行:

new CreateFile().SetData(this.ImageFileName, value).Image() 

首先,SetData(...)ImageFileName上通过测试后将IsNewItem作为参数。这看起来像是在说“此项目没有名称,但将其名称作为参数。

在不了解应该这些功能的更多内容的情况下,这看起来有点奇怪。

要看的事情:

  1. SetData(...)
  2. 应该ImageFileName接受可能为空的参数吗?
  3. 方法调用Image()是否在任何单元测试中返回非空字符串?
  4. public class User
    {
        public int UserId { get; set; }
    
        [NotMapped]
        [ScriptIgnore]
        public string ImageFileName { get; private set; }
    
        [NotMapped]
        public bool IsNewItem { get; set; }
    
        [NotMapped]
        public string UserImage
        {
            get { return this.ImageFileName; }
            set { this.ImageFileName = CreateImage(value); }
        }
    
        private string CreateImage(string value)
        {
            return 
                IsNewItem
                    ? new CreateFile().SetData(this.ImageFileName, value).Image()      
                    : value;
        }
     }