ASP.NET动态数据图像字段模板

时间:2013-03-19 16:27:46

标签: sql-server image-uploading asp.net-dynamic-data

我正在与动态数据进行一场小规模的小冲突。我有一个自定义数据库图像字段模板,允许用户上传和编辑插入更新不起作用的图像。我可以通过删除如果插入模式在以下代码中设置uri的位置(在DBImage_Edit.ascx.cs中)来进行更新:

protected override void ExtractValues(IOrderedDictionary dictionary)
{
  ...
  dictionary["contenttype"] = "image/" + imgext;
  dictionary["filecontents"] = new System.Data.Linq.Binary(FileUploadEdit.FileBytes);
  if (Mode == DataBoundControlMode.Insert)
  {
    dictionary["uri"] = imgname + "_" + DateTimeOffset.Now.Ticks.ToString() + "." + imgext;
  }
  ...
}

总结一下,如果编辑 uri 设置为与数据库中上一个值不同的值,则会成功上传新图像。如果 uri 与数据库中的上一个值相同,即使 filecontents contenttype 发生更改,SQL Server也永远不会得到新闻

元数据:

...
[DisplayName("Uri")]
[ScaffoldColumn(true)]
[Required]
public object uri { get; set; }

[DisplayName("Graphic")]
[ScaffoldColumn(true)]
[UIHint("DBImage")]
public object filecontents { get; set; }
...

我还删除了 UpdateCheck ,但这似乎没有改变行为:

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_filecontents", DbType="VarBinary(MAX)")] //, UpdateCheck=UpdateCheck.Never
public System.Data.Linq.Binary filecontents
  {
    get
    {
...

(请参阅上面的 UpdateCheck = UpdateCheck.Never 注释掉)

亲切的问候,

约旦

1 个答案:

答案 0 :(得分:0)

我独自离开了一个星期,回来后很容易想出来......有时你只需要散步,而不是过度思考这些事情。

问题在于缓存。我通过在OnDataBinding中添加一个nocache参数来更改图像处理程序URL:

<强> OLD:

ImageEdit.ImageUrl = "http://localhost/WebServices.CAD/ImageHandler.ashx?uri=" + row.uri;

ImageEdit.ImageUrl = "http://localhost/WebServices.CAD/ImageHandler.ashx?nocache=" + System.DateTime.Now.Ticks.ToString() + "&uri=" + row.uri;

按设计工作。