0

おそらく、準備ができている明らかなものが欠けています。しかし、午前中ずっとこれを解読しようとした後、私はどこにも行きませんでした.

Web フォーム アプリでリバース エンジニアリングされた Code First Entity Framework を使用しています。

TryUpdateModel を呼び出す前に送信された値を更新しようとしていますが、それを理解できないようです。

これが私の現在のコードです:

public void frmOrganisation_UpdateItem([RouteData] int id)
    {

        Website.Models.CrmOrganisation item = null;

        var query = from o in db.CrmOrganisations
                    where o.OrganisationId == id
                    select o;

        item = query.Single();

        if (item == null)
        {
            // The item wasn't found
            ModelState.AddModelError("", String.Format("Item with id {0} was not found", id));
            return;
        }

        TryUpdateModel(item);
        if (ModelState.IsValid)
        {
            db.SaveChanges();

            Response.Redirect(Helper_Methods.AppendQueryStringToUrl("status", "Changes Saved!"));

        }
    }

フォームのフィールドの 1 つは、入力する URL を探しているテキスト ボックス (id: txtWebsite) です。完全な URL (http:// を含む) をデータベースに保存します。ただし、ユーザーが http:// を入力する必要はありません。したがって、送信された値を傍受したいのですが、それが http を開始しない場合は、プレフィックスを付けたいと考えています。そうして初めて、TryUpdateModel (したがって検証) を実行したいと思います。

誰かが私を正しい方向に向けることができますか? クリス。

更新 - 私は少し先に進みました。

「TryUpdateModel」と「if (ModelState.IsValid)」の間に、「if (ModelState["Website"] != null && !string.IsNullOrWhiteSpace(ModelState["Website"].Value.RawValue.ToString) という行があります。 ())) ModelState["ウェブサイト"].Value = new ValueProviderResult("http://" + ModelState["ウェブサイト"].Value.RawValue, "http://" + ModelState["ウェブサイト"].Value. RawValue, CultureInfo.CurrentCulture);".

これはモデルの状態を更新していますが、これらの変更はデータベースに反映されていないため、「db.SaveChanges();」と推測します。私の変化が見られません。

4

1 に答える 1

0

私は解決策を見つけました。

ボタンの OnClick イベントに従ってフィールドを更新し、更新メソッドにコマンドを発行します。したがって、クリックボタンを使用します-> OnClickイベントが発生し、フォームが更新されます-> UpdateItemメソッドが呼び出され、モデルとデータベースが更新されます。

于 2012-11-19T16:24:22.040 に答える