2010-07-26 55 views
0

我想保留数据在视图控件中,如下拉列表,单选按钮,复选框,文本框,同时显示相同的视图再次带有验证失败消息。数据在使用ViewData的下拉列表绑定中。使用viewdata复选框数据绑定。用户在文本框和复选框控件中输入值。 当视图与验证消息一起显示时,控件被重置,并且在显示视图之前需要在viewData中传递下拉列表数据。请让我知道任何解决方案。在Asp.net 2.0中如何保留数据在视图中的控件,同时重新显示相同的视图与验证错误信息

谢谢& Regards, Tsara。

+0

请显示您当前的*非工作*版本的代码,以便我们可以有讨论的基础和改进建议。 – 2010-07-26 08:53:24

+0

请调整您的标题。目前它似乎是关于ASP.NET 2.0 webforms,而您的标记显示它是关于ASP.NET MVC 2.这些是两种不同的技术。 – XIII 2010-07-26 09:20:15

+0

请在 – TSara 2010-07-26 09:26:04

回答

0

查找以下所需的代码 请在下面查看查看。下拉列表中以及复选框中有一些数据。第一次页面渲染它被传递到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> 

在回发函数调用验证如下

做公共的ActionResult寄存器(串txtUserName,串txtPassword,串txtConfirmPassword,串txtEmailId,的FormCollection frmCollection)

{ 串strValue中= frmCollection。获取( “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(); 
    } 

每次显示视图之前都需要在视图数据中有值。

为了解决这个问题,我尝试了解决方案,我得到了像 IDictionary valueProvider = frmCollection.ToValueProvider(); 但它在mvc 2.0中不受支持。

如果您需要更多详细信息,请让我知道。

相关问题