0

私はダイナミックデータでマイナーな小競り合いに従事しています。カスタムデータベース画像フィールドテンプレートを使用して、挿入は機能するが更新は機能しない場合に、ユーザーが画像をアップロードおよび編集できるようにします。次のコード(DBImage_Edit.ascx.cs内)でが設定されている場所の周りのif挿入モードを削除することで、更新を機能させることができます。uri

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の以前の値と同じである場合、 filecontentscontenttypeが変更されても、SQLServerはニュースを取得しません。

メタデータ:

...
[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を参照してください)

敬具、

ヨルダン

4

1 に答える 1

0

私はそれを一週間放っておいて、戻ってきて簡単に理解しました..時々あなたはただ散歩に行く必要があり、これらのことを考えすぎないでください。

問題はキャッシュでした。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;

設計どおりに動作します。

于 2013-03-25T18:46:01.727 に答える