2010-07-26 10 views
0

Je veux conserver les données dans les contrôles d'affichage comme liste déroulante, bouton radio, case à cocher, textbox tout en affichant la même vue encore avec le message d'échec de validation. Les données sont dans la liste déroulante lier à l'aide de ViewData. Case à cocher de liaison de données à l'aide de viewdata. L'utilisateur saisit des valeurs dans la zone de texte et pour le contrôle de case à cocher. Lorsque la vue est affichée avec les messages de validation, les contrôles sont réinitialisés et pour la liste déroulante, les données de la liste doivent être transmises dans viewData avant d'afficher la vue. S'il vous plaît laissez-moi savoir toute solution à cela.Dans Asp.net 2.0 comment conserver les données dans les contrôles en vue tout en réaffichant la même vue avec le message d'erreur de validation

Merci & Cordialement, Tsara.

+0

Veuillez indiquer votre version actuelle * du code qui ne fonctionne pas * afin que nous puissions avoir une base de discussion et des suggestions d'amélioration. –

+0

S'il vous plaît ajuster votre titre. Pour le moment, il semble qu'il s'agisse de webforms ASP.NET 2.0 alors que votre tagging montre qu'il s'agit d'ASP.NET MVC 2. Il s'agit de 2 technologies différentes. – XIII

+0

Veuillez trouver l'extrait de code ci-dessous – TSara

Répondre

0

Trouvez le code requis ci-dessous Veuillez trouver ci-dessous Voir. Il y a des données dans la liste déroulante et aussi dans la case à cocher. Pour la première fois, le rendu de la page est transmis dans ViewData.

<div id="RegisterLogin"> 
<label id="Label1"> Project:</label> 
       <%= Html.Label(Convert.ToString(ViewData["SelectedProject"])) %> 
       <%= Html.DropDownList("ProjectCode", (SelectList)ViewData["ddlProject"], "--Select--", new { id = "ddlProject" , title = "Select Project" })%> 

      <br /> 
      <br /> 

      <label id="Label2"> 
       Select User:</label> 

      <%= Html.DropDownList("ddlUsers", (SelectList)ViewData["ddlUsers"], "--Select User--", new { id = "ddlUsers", title = "Select User" })%> 
      <br /> 
      <br /> 
      <label id="spacing"> 
       Username:</label> 
      <input type="text" name="txtUserName" title="Enter username" id="txtUserName" /> 
      <%= Html.ValidationMessage("username") %> 
      <br /> 
      <br /> 
      <label id="leftalign"> 
       Password :</label> 
      <input type="password" name="txtPassword" title="Enter your password" id="txtPassword" /> 
           <%= Html.ValidationMessage("password") %> 
      <br /> 

      <br /> 
      Confirm Password : 
      <input type="password" name="txtConfirmPassword" title="Confirm your password" id="txtConfirmPassword" /> 
      <%= Html.ValidationMessage("confirmPassword") %> 
      <br /> 
      <br /> 
      <label id="space" >Email :</label> 
      <input type="text" name="txtEmailId" title="Enter your email id" id="txtEmailId" /> 
      <%= Html.ValidationMessage("email") %> 
      <br /> 
      <br /> 

      <label id="rolealign"> Assign Role : </label> 
      <div class="listPermissions"> 
      <%= Html.ValidationMessage("role") %> 
       <% Dictionary<string, string> lstRoles = ViewData["ListRoles"] as Dictionary<string, string>; %> 
       <% if (lstRoles != null) 
        { 
         int iCounter = 1; 
         foreach (KeyValuePair<String,String> item in lstRoles) 
         { %> 
         <%= Html.CheckBoxCustom(Convert.ToString(iCounter+1), "chkRole", item.Value,"") %> 
         <%= Html.Encode(item.Key) %><br /> 

       <%} 
        }%> 

      </div> 

      <br /> 
      <input type="image" src="../../Content/save.jpg" value="Save" alt="Save" style="padding-left:250px;"/> 
      <%--<img src="../../Content/save.jpg" alt="Save" id="imageGO" />--%> 
      <img src="../../Content/reset.jpg" onclick="document.forms[0].reset()" alt="Reset"/> 
      <%--<img src="../../Content/reset.jpg" alt="Reset" onclick="return btnCancel_onclick()" />--%> 
     </div> 

Dans la validation d'appel de fonction postback se fait comme suit

publique ActionResult enregistrer (chaîne txtUserName, chaîne txtPassword, chaîne txtConfirmPassword, chaîne txtEmailId, FormCollection frmCollection)

{ chaîne strValue = frmCollection. Get ("chkRole"); ViewData ["PasswordLength"] = MembershipService.MinPasswordLength;

 if (ValidateRegistration(txtUserName, txtEmailId, txtPassword, txtConfirmPassword, frmCollection)) 
     { 
      if (strValue == "") 
      { 
       ModelState.AddModelError("role", "Please select the role"); 
      } 
      else 
      { 
       // Attempt to register the user 
       MembershipCreateStatus createStatus = MembershipService.CreateUser(txtUserName, txtPassword, txtEmailId); 


       if (createStatus == MembershipCreateStatus.Success) 
       { 
        FormsAuth.SignIn(txtUserName, false /* createPersistentCookie */); 

        // Create an empty Profile for the newly created user 



        return RedirectToAction("Index", "Home"); 
       } 
       else 
       { 
        ModelState.AddModelError("_FORM", ErrorCodeToString(createStatus)); 
       } 
      } 
     } 

     //IDictionary<string, ValueProviderResult> valueProvider = frmCollection.ToValueProvider(); 
     //Dictionary<string, string> valueProvider = frmCollection.AllKeys.ToDictionary(k => k, v => frmCollection[v]); 
     //foreach (string i in valueProvider.Keys) 
     //{ 
     // ModelState.SetModelValue(i, valueProvider[i]); 
     //} 

     //Get list of projects 
     ProjectOperations objProjectOperations = new ProjectOperations(); 
     List<Project> lstProjects = objProjectOperations.GetAll(); 

     //Logging://Verbose: 
     logEntry = new LogEntry("List of project added into view data", "AzureTableLogs", 0, 0, System.Diagnostics.TraceEventType.Verbose, "", null); 
     Logger.Write(logEntry); 

     ViewData["ddlProject"] = new SelectList(lstProjects, "ProjectCode", "ProjectName"); 

     MembershipUserCollection lstUser = Membership.GetAllUsers(); 

     ViewData["ddlUsers"] = new SelectList(lstUser, "UserName", "UserName"); 

     //MembershipUserCollection lstUser= Membership.GetAllUsers(); 
     // If we got this far, something failed, redisplay form 
     return View(); 
    } 

Avant d'afficher la vue, vous devez avoir des valeurs dans les données d'affichage.

Pour résoudre ce que j'ai essayé la solution j'ai obtenu comme IDictionary valueProvider = frmCollection.ToValueProvider(); mais il n'est pas pris en charge dans mvc 2.0.

Si vous avez besoin de plus de détails s'il vous plaît faites le moi savoir.