0

私は NerdDinner ASP.NET MVC 1.0 の例に取り組んでいます。

例外処理とは別に、すべてが機能しています。私は自分の利益のためにそれを非常にわずかに変更しましたが、基本的に、検証ルールに違反する新しいレコードを作成すると、間違ったフィールドを強調表示するフォームの代わりに ApplicationException がスローされます。

partial void OnValidate(ChangeAction action)
{
    if (!IsValid)
        throw new ApplicationException("Rule violations prevent saving");
}

.. 基本的に、コードがここに入ってきて (新しい例外をスロー)、VS が例外で中断します。

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formValues)
{
    Customer c = customerRepository.GetCustomer(id);
    try
    {
        UpdateModel(c);
        customerRepository.Save();
        return RedirectToAction("Details", new { id=c.CustomerId });
    }
    catch
    {
        ModelState.AddRuleViolations(c.GetRuleViolations());
        return View(c);
    }
}

誰かが私が間違ったことを危険にさらすことはできますか?

編集: SO に関するいくつかの関連する投稿を確認したことを追加する必要がありますが、私が見る限り、まったく同じ問題はありませんでした。

4

1 に答える 1

1

それは正しいと思います。ただし、プロパティModelState.IsValidを使用して例外のスローを回避することもできます。

これらのリンクも参照してください。

MVC アプリケーションでのモデル データの検証

NerdDinner の ASP.NET MVC で ModelState.IsValid が有効なのは何ですか?

于 2010-04-14T14:37:56.087 に答える