0

私は MVC3 アプリケーションで作業しています。コントローラーで例外を処理するのに苦労しています。

ここで、マイ アカウント コントローラーは、

public ActionResult Register(NewRegister model)
{
    if (ModelState.IsValid)
    {
        if (!IsUserLoginExist(model.Email))
        {
            AccountServiceHelper.CreatePerson(model);
            return RedirectToAction("RegistrationConfirmation", "Account");
        }
        else
        {
            ModelState.AddModelError("","Email Address already taken.");
        }
    }
    return View(model);
}

検証後IsUserLoginExist、ヘルパー クラス、つまりAccountServiceHelperのような Web サービス メソッドを使用するために呼び出していCreatePersonます。

私のヘルパークラスは次のようになります。

public static void CreatePerson(NewRegister model)
{
    try
    {
        try
        {
            var FirstName = model.FristName;
            var LastName = model.LastName;
            var Email = model.Email;
            var Role = model.Role;
            var Password = model.Password;
            .....
            .....
            service.CreatePerson(model);
            service.close();
        }
        catch(Exception e) 
        {

        }
    }
    catch { }
}

私の問題は、ヘルパークラスで例外を処理してコントローラーに戻る方法です。

4

3 に答える 3

1

1 つの可能性は、コントローラーで例外を処理することです。

public static void CreatePerson(NewRegister model)
{
    var FirstName = model.FristName;
    var LastName = model.LastName;
    var Email = model.Email;
    var Role = model.Role;
    var Password = model.Password;
    .....
    .....
    service.CreatePerson(model);
    service.close();
}

その後:

public ActionResult Register(NewRegister model)
{
    if (ModelState.IsValid)
    {
        try
        {
            if (!IsUserLoginExist(model.Email))
            {
                AccountServiceHelper.CreatePerson(model);
                return RedirectToAction("RegistrationConfirmation", "Account");
            }
            else
            {
                ModelState.AddModelError("", "Email Address already taken.");
            }
        }
        catch (Exception ex)
        {
            ModelState.AddModelError("", ex.Message);
        }
    }
    return View(model);
}
于 2012-08-09T15:34:07.633 に答える
1

他の人が言ったように、このメソッドを使用してヘルパー クラスからスローします。

public static void CreatePerson(NewRegister model)
{
    try
    {
        var FirstName = model.FristName;
        var LastName = model.LastName;
        var Email = model.Email;
        var Role = model.Role;
        var Password = model.Password;
        .....
        .....
        service.CreatePerson(model);
        service.close();
    }
    catch(Exception e) 
    {
        // handle it here if you want to i.e. log

        throw e; // bubble it to your controller
    }
}

ヘルパー クラスで例外が発生し、それをヘルパー クラスで明確にキャッチしない場合、とにかくコントローラーにバブル アップします。したがって、ヘルパー クラスでそれを処理したくない場合は、最終的にコントローラーで処理されるため、キャッチする必要はありません。

于 2012-08-09T15:45:58.567 に答える
0

ヘルパークラスからスローします

于 2012-08-09T15:35:21.917 に答える