具有复杂模型的MVC远程验证

时间:2018-10-30 18:01:33

标签: jquery asp.net-mvc

假设我在控制器DefaultsController中有此验证方法:

    [HttpGet]
    public JsonResult DefaultNameValidation(string DefaultName)
    {
        return Json(true, JsonRequestBehavior.AllowGet);
    }

我的视图模型是:

public class DefaultsViewModel
{       
    public DefaultCreationModel DefaultCreationModel { get;set;}
}
public class DefaultCreationModel
{
    [Required(ErrorMessage = "Le nom du défaut est obligatoire.")]
    [Remote("DefaultNameValidation", "Defaults")]
    public string DefaultName { get; set; }
}

以及如何生成输入字段:

 <div class="row m-2">
     <span class="mr-2 my-auto font-weight-bold">Nom du nouveau défaut </span>@Html.TextBoxFor(m => m.DefaultCreationModel.DefaultName)
 </div>

在这种情况下,执行验证时,传递给控制器​​的字符串DefaultName为空。

但是,如果我这样做(直接在主模型中使用字符串DefaultName):

public class DefaultsViewModel
{       
    [Required(ErrorMessage = "Le nom du défaut est obligatoire.")]
    [Remote("DefaultNameValidation", "Defaults")]
    public string DefaultName { get; set; }
}

一切都很好。

如何使其在第一种情况下正常工作? (因为这是一个很大的观点,我需要在不混淆意图的情况下尽可能保持清晰)

0 个答案:

没有答案