假设我在控制器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; }
}
一切都很好。
如何使其在第一种情况下正常工作? (因为这是一个很大的观点,我需要在不混淆意图的情况下尽可能保持清晰)