сохранение данных динамической формы в asp.net mvc - PullRequest
0 голосов
/ 01 февраля 2012

Мой код создает динамическую форму, основанную на некоторой структуре XML.
Форма может содержать много полей HTML, например
текстовое поле
TextArea флажки
etc.etc.
После того, как форма будет отображена в формате HTML, пользователи могут заполнить данные.
После того, как пользователь заполнил некоторые значения, я проверяю, находятся ли введенные пользователем значения в правильном формате или нет. в моем контроллере, анализируя коллекцию форм.
Если во введенных данных есть какая-то ошибка, тогда я добавляю ошибки к ModelState, используя функцию ModelState.AddModelError("f2k0", "This Field is Required");. Но когда я возвращаю представление из-за его слабой типизации, у меня нет объекта, который можно вернуть, поэтому обработанная форма теряется, а также значения, заполненные пользователем, теряются.
Я не могу использовать проверку на стороне клиента, поэтому требуется только проверка на стороне сервера.

РЕДАКТИРОВАТЬ - правила, которые я использую для проверки, сохраняются в TempData.
EDIT2 - это код на мой взгляд

@using (Html.BeginForm("SpecialSurveyCode","Scan",new { codeId = ViewBag.CodeId, scanId = ViewBag.ScanId },FormMethod.Post,null))
        {
            <fieldset>
                @if (Model != null)
                {
                    for (int i = 0; i < Model.Keys.Count; i++)
                    {
                        var cntrl = Model[i];
                        ViewDataDictionary cntrlDataDic = new ViewDataDictionary(); cntrlDataDic.Add("cntrlId",
                        i); switch (cntrl.ControlType)
                        {
                            case ControlTypes.input_text: Html.RenderPartial("_Textbox",cntrl, cntrlDataDic); break;
                            case ControlTypes.textarea: Html.RenderPartial("_Textarea",cntrl, cntrlDataDic); break;
                            case ControlTypes.checkbox: Html.RenderPartial("_CheckboxGroup",cntrl, cntrlDataDic); break;
                            case ControlTypes.radio: Html.RenderPartial("_RadioGroup",cntrl, cntrlDataDic); break;
                            case ControlTypes.select: Html.RenderPartial("_SelectList",cntrl, cntrlDataDic); break;
                        }
                    }
                }
            </fieldset>
            <input type="submit" value="Submit" class="formSubmitButton" />


        }


вот модель Dictionary<int,cntrlObject>

1 Ответ

0 голосов
/ 01 февраля 2012

Попробуйте вернуть вид без параметра модели.Этот вызов метода возвращает представление, заполненное значениями ModelState.

return View("MyView");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...