2012-12-05 20 views
0

所有我的路線:ASP.NET MVC 4驗證錯誤沒有出現

routes.MapRoute(
     name: "Login", 
     url: "{eid}/Login", 
     defaults: new { controller = "Account", action = "Login", eid = ConfigurationManager.AppSettings["Congress_Code"] } // Parameter defaults 
    ); 

    routes.MapRoute(
     name: "Account", 
     url: "{eid}/Account/{action}", 
     defaults: new { controller = "Account", action = "{action}", eid = ConfigurationManager.AppSettings["Congress_Code"] } 
    ); 

    routes.MapRoute(
     name: "Default", 
     url: "{eid}/{controller}/{action}", 
     defaults: new { controller = "Account", action = "Login", eid = ConfigurationManager.AppSettings["Congress_Code"] } 
    ); 

在manage.cshtml:

@using (Html.BeginForm(new { eid = ViewBag.EventId })) 
{ 
    @Html.ValidationSummary(false) 

在帳戶控制:

// 
// GET: /Account/Manage 
//[AllowAnonymous] 
public ActionResult Manage(int eid, ManageMessageId? message) 
{ 
    ViewBag.StatusMessage = 
     (message == ManageMessageId.UpdateDetailsObjSuccess) ? "Your user details have been modified." 
     : ""; 
    return View(); 
} 

// 
// POST: /Account/Manage 
[HttpPost] 
public ActionResult Manage(UpdateUserDetailsModel model,int eid) 
{ 
    if (ModelState.IsValid) 
    { 
     var updateModel = AutoMapper.Mapper.Map<Models.UpdateUserDetailsModel,KPAD_Api.Kiosk.KioskUserDetailsExtended>(model); 
     try 
     { 
      long token = Proxy.Proxy.Instance.Token[KioskUser.Id]; 
      var result = Proxy.Proxy.Instance.KioskUserClient.UpdateKioskUser(updateModel, token); 
      if (result.ErrorCode == ReturnCodes.Codes.ALL_OK) 
       return RedirectToAction("Manage", new { Message = ManageMessageId.UpdateDetailsObjSuccess }); 
      else 
       ModelState.AddModelError(ReturnCodes.Instance.GetMessage(result.ErrorCode), new Exception(ReturnCodes.Instance.GetMessage(result.ErrorCode))); 
     } 
     catch (Exception e) 
     { 
      ModelState.AddModelError("Database error occured.Please contact the website administrator", e); 
     } 
    } 
    else 
    { 
     ModelState.AddModelError("An unknown error occurend. Please try again. If it persists please contact the admin.",new Exception("Unknown")); 
    } 
    // If we got this far, something failed, redisplay form 
    return View(model); 
} 

但仍是驗證摘要不會在我故意生成異常或本質發生異常時顯示。 有沒有人有任何想法?

回答

0

嘗試此

在manage.cshtml:

@using (Html.BeginForm(new { eid = ViewBag.EventId })) 
{ 
    @Html.ValidationSummary(true) 

在控制器

[HttpPost] 
public ActionResult Manage(UpdateUserDetailsModel model,int eid) 
{ 
    if (ModelState.IsValid) 
    { 
     var updateModel = AutoMapper.Mapper.Map<Models.UpdateUserDetailsModel,KPAD_Api.Kiosk.KioskUserDetailsExtended>(model); 
     try 
     { 
      long token = Proxy.Proxy.Instance.Token[KioskUser.Id]; 
      var result = Proxy.Proxy.Instance.KioskUserClient.UpdateKioskUser(updateModel, token); 
      if (result.ErrorCode == ReturnCodes.Codes.ALL_OK) 
       return RedirectToAction("Manage", new { Message = ManageMessageId.UpdateDetailsObjSuccess }); 
      else 
       ModelState.AddModelError(ReturnCodes.Instance.GetMessage(result.ErrorCode), new Exception(ReturnCodes.Instance.GetMessage(result.ErrorCode))); 
     } 
     catch (Exception e) 
     { 
      ModelState.AddModelError("","Database error occured.Please contact the website administrator"); 
     } 
    } 
    else 
    { 
     ModelState.AddModelError("","An unknown error occurend. Please try again. If it persists please contact the admin."); 
    } 
    // If we got this far, something failed, redisplay form 
    return View(model); 
} 

它結合在鍵值對中的錯誤。