我的代码是基于某些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>
答案 0 :(得分:0)
尝试返回不带模型参数的视图。该方法调用由ModelState值填充的返回视图。
return View("MyView");