2017-10-17 89 views
0

可以说我有一个没有模型绑定或数据注释的表单。当表单发布后,我怎样才能返回一个验证消息在控件下方的视图 - 注意我试图在这里做服务器端验证?添加验证信息查看

下面是一个例子。

<input name="Address" type="text" value=""> 
<span class="field-validation-valid" data-valmsg-for="Address" data-valmsg-replace="true"></span> 


public ActionResult Create(FormCollection collection) 
{ 
     if (string.IsNullOrEmpty(collection["Address"]) 
     { 
      // Set the field validation error span message 
      ModelState.AddModelError("Address", "This field is required."); 

      return View(); 
     } 
}  

注:我知道如何使用视图模型和数据的注释添加验证。在这种情况下,我无法使用视图模型,因此需要某种方法来手动验证并将验证消息返回给视图。

上面似乎并没有工作

*更新*

也许使用可视数据如下:

<span class="field-validation-valid" data-valmsg-for="Address" data-valmsg-replace="true">@ViewData["Address"]</span> 
+1

尝试在控件下面添加@ Html.ValidationMessageFor(m => m.Address,“”)?这应该显示您的控制器中为该属性添加的所有模型状态错误。还有'@ Html.ValidationSummary()',它显示所有模型状态错误。 – zgood

+0

做什么zgood说,也将您的模型返回到您的视图。 'return View(collection)' –

+0

另外,不要忘记分开你的Get和Post的ActionResults,不确定你是否试图在这里结合两者。 –

回答

0

我会用HTML辅助去。

@Html.ValidationMessage("Address") 

这将自动生成HTML:

<span class="field-validation-valid" data-valmsg-for="address" data-valmsg-replace="true"></span>` 

您的代码看起来是正确的。

if (string.IsNullOrEmpty(collection["Address"])) 
{ 
    // Set the field validation error span message 
    ModelState.AddModelError("Address", "This field is required."); 
return View(); 
}