我与动态数据发生了一场小冲突。我有一个自定义数据库图像字段模板,允许用户上传和编辑图像,其中插入工作,但更新不。我可以通过删除来进行更新工作,如果插入模式围绕uri
设置在以下代码中(在dbimage_edit . asx .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被设置为与DB中的先前值不同的值,则新图像上传成功。如果uri与DB中的前一个值相同,即使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。从来没有上图)
亲切的问候,约旦
我放了一个星期,回来后很容易就解决了。有时候你只是需要出去走走,不要过多地考虑这些事情。
问题是缓存。我通过在OnDataBinding中添加nocache参数来更改图像处理程序url:
老:
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;
按设计工作