在asp.net mvc中保存动态表单数据

时间:2012-02-01 15:00:10

标签: asp.net-mvc-3 validation

我的代码是基于某些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 :(得分:0)

尝试返回不带模型参数的视图。该方法调用由ModelState值填充的返回视图。

return View("MyView");