有时为了在做远程机制时,多使用一个参数,可以加上AdditionalFields字段,该字段可以自定义数据,交给服务器验证。
样例代码:
类:
public class ColumnVM : BaseObj { [Required(ErrorMessage = "请填写栏目的名称"), Remote("CheckColumnName", "Course", ErrorMessage = "已存在相同栏目", AdditionalFields = "ActionMethod")] public string Name { get; set; } public string IsParent { get; set; } public string ParentId { get; set; } public string ImageURL { get; set; } }
控制器:
public JsonResult CheckColumnName(string name, string actionMethod)//actionMethod是为了判断验证的方法是来自哪一个表单 { bool result = false; //不包含文件夹名,则校验成功 List<String> columnNames = columnBLL.GetAll().Select(a => a.Name).ToList(); if (actionMethod == "Edit") { columnNames.Remove(name); } result = !columnNames.Contains(name); return Json(result, JsonRequestBehavior.AllowGet); }
前端:
@using (Html.BeginForm("EditColumn", "Course", FormMethod.Post))//为了方便,本样例只写一个表单,另一个add表单内容相仿。 { <input type="hidden" name="ActionMethod" value="Edit" /> @Html.HiddenFor(a => a.Id) <table class="t-tableAddAndEdit"> <tr> <th> 项目 </th> <th> 详情 </th> </tr> <tr> <td> 当前目录 </td> <td id="editDirectory" style="color: #269DDC"> Root> </td> </tr> <tr> <td> 课程栏目名称 </td> <td id="editColumnName"> @Html.TextBoxFor(model => model.Name, new { @class = "editColumn" }) @Html.ValidationMessageFor(model => model.Name) </td> </tr> </table> <div style="height: 30px"> </div> <input style="float: left; margin-left: 20px;" type="submit" value="确定" class="submitBtn" /> }
该样例实现依据传过来的方法的不同(是add还是edit),做相应的操作,判断文件名是否存在重复问题。