В Asp.net 2.0, как сохранить данные в элементах управления в представлении при повторном отображении того же представления с сообщением об ошибке проверки - PullRequest
0 голосов
/ 26 июля 2010

Я хочу сохранить данные в элементах управления представлением, таких как раскрывающийся список, переключатель, флажок, текстовое поле, при повторном отображении того же представления с сообщением об ошибке проверки. Данные в выпадающем списке привязываются с помощью ViewData. Флажок привязки данных с использованием viewdata. Пользователь вводит значения в текстовое поле и для флажка управления. Когда представление отображается с сообщениями проверки, элементы управления сбрасываются и для раскрывающегося списка данные должны быть переданы в viewData перед отображением представления. Пожалуйста, дайте мне знать любое решение этой проблемы.

Спасибо и С уважением, Тцар.

1 Ответ

0 голосов
/ 26 июля 2010

Найдите необходимый код ниже Пожалуйста, найдите ниже вид. Некоторые данные есть в выпадающем списке, а также в флажке. При первом отображении страницы она передается во 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)

{ string 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();
    }

Каждый раз перед отображением представления необходимо иметь значения в данных представления.

Для решения этой проблемы я попробовал решение, которое я получил, как IDictionary valueProvider = frmCollection.ToValueProvider (); но это не поддерживается в MVC 2.0.

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

...