2016-05-06 3 views
0

Hier habe ich ein Szenario, in dem ich überprüfen möchte, ob Datensatz bereits vorhanden ist, dann Fehlermeldung angezeigt werden. Wenn der Datensatz nicht vorhanden ist, dann wird die Teilansicht gerendert, und wenn der Datensatz nicht existiert, bedeutet das Hinzufügen des Datensatzes erfolgreich die partielle Ansicht. in viewbag.i versucht, aber fehlgeschlagen, kann jemand helfen. danken Ihnen im Voraus Controller Aktion Methodewenn Datensatz existiert Anzeige Fehlermeldung in Viewbag in mvc

public ActionResult ManageRole(TBL_ADMIN_ROLE role) 
     { 
      if (dbcontext.TBL_ADMIN_ROLE.Any(role1 => role1.RoleName.Equals(role.RoleName) && role1.IsDeleted == 0)) 
      { 

       ViewBag.ExistsRecord = "Record Already Exists"; 
      } 
      if (TryUpdateModel(role)) 
      { 
       if (ModelState.IsValid) 
       { 
        role.IsDeleted = 0; 
        role.CreatedDateTime = DateTime.Now; 
        dbcontext.TBL_ADMIN_ROLE.Add(role); 
        role.CreatedByID = Convert.ToInt32(Session["UserID"]); 
        dbcontext.SaveChanges(); 
        dbcontext.Configuration.ProxyCreationEnabled = false; 
        List<TBL_ADMIN_ROLE> roleList = dbcontext.TBL_ADMIN_ROLE.Where(x => x.IsDeleted == 0).ToList(); 
        return PartialView("_ManageRoleList", roleList); 
       } 
      } 
      return View(role); 

     } 

Ansicht

@using (Ajax.BeginForm("ManageRole", "Security", null, new AjaxOptions 
    { 
     HttpMethod = "POST", 
     UpdateTargetId = "DisplayRoleGrid", 
     InsertionMode = InsertionMode.Replace, 
     OnSuccess = "oNsuccess" 
    })) 
    { 

     @Html.AntiForgeryToken() 
     @Html.ValidationSummary(true) 
     <div id="divmessage"> 
      <label id="successmessage"></label> 
     </div> 
     <div class="row"> 
      <div class="col-lg-3"></div> 
      <div class="col-lg-4"> 
       @ViewBag.ExistsRecord 
      </div> 
     </div> 
<div class="col-lg-4"> 


      @(Html.Kendo().TextBox().Name("RoleName") 
        .HtmlAttributes(new { @class = "form-control", placeholder = "Role Name", required = "required", validationmessage = "Enter {0}", data_required_msg = "Enter Role Name" })) 

     </div> 
    } 
+0

Unklar, was Sie versuchen zu tun. Ihre Controller-Methode hat ein sinnloses 'if (TryUpdateModel (role))' - es wurde bereits vom 'DefaultModelBinder' aktualisiert/gebunden. Sie fügen lediglich eine 'ViewBag'-Nachricht hinzu und speichern sie dann trotzdem, selbst wenn sie existiert. Die Hauptansicht hat '@ ViewBag.ExistsRecord', aber das müsste Teil sein, denn dort gibt es –

+0

@StephenMuecke Wie kann ich jetzt auflösen? Ich meine, was jetzt zu tun ist? –

+0

Es ist nicht einmal klar, was Sie wirklich wollen und so viel von Ihrem Code macht keinen Sinn. Zunächst sollten Sie Ihre 'RoleName' -Eigenschaft mit' [Required] 'dekorieren (entfernen Sie den' data_required_msg = "Role Name eingeben" ') und dann ein' RemoteAttribute' verwenden, um zu überprüfen, ob die Rolle existiert - [Vorgehensweise: Implementieren der Remote-Validierung in ASP.NET MVC] (https://msdn.microsoft.com/en-us/library/gg508808 (vs.98) .aspx) und schließen Sie '@ Html.ValidationMessageFor (m => m.RoleName)' in Ihrem ein view –

Antwort

0

if (dbcontext.TBL_ADMIN_ROLE.Any(role1 => role1.RoleName.Equals(role.RoleName) && role1.IsDeleted == 0)) { ViewBag.ExistsRecord = "Record Already Exists"; Return View(Role); }

nicht sicher, was Sie zu tun versuchen. Sie müssen dies nicht mit Viewbag tun, um einen Fehler zurückzugeben. Sie können AddModelError für diese

Verwandte Themen