我有一个容器和嵌套的视图模型,并使用EditorFor来呈现嵌套的视图模型,我想将remoteAttribute添加到一个viewmodel(ConcreteViewModelA :: prop3)中的一个属性进行验证。但是,在验证Controller操作方法上,所有我得到的都是null。
我尝试过使用Validate([Bind(Prefix =“item”)] string prop3),但仍然返回NULL。任何想法?
public class SomeContainer
{
public List<ISomethingViewModel> SomeViewModels { get; set; }
}
public class ConcreteViewmodelA : ISomethingViewModel
{
public int prop1 { get; set; }
public int prop2 { get; set; }
[Remote("Validate", "RemoteValidation")]
public string prop3 { get; set; }
}
public class ConcreteViewModelB : ISomethingViewModel
{
public int prop1 { get; set; }
public int prop2 { get; set; }
}
public interface ISomethingViewModel
{
int prop1 { get; set; }
int prop2 { get; set; }
}
查看:
@model test.Models.SomeContainer
@using (Html.BeginForm())
{
@Html.ValidationSummary()
<p>Begin here</p>
foreach (var item in Model.SomeViewModels)
{
@Html.EditorFor(x => item)
}
}
答案 0 :(得分:2)
尝试定义视图模型:
public class MyViewModel
{
public string Prop3 { get; set; }
}
然后:
public ActionResult Validate([Bind(Prefix = "item")] MyViewModel model)
{
return Json(
!string.IsNullOrEmpty(model.Prop3),
JsonRequestBehavior.AllowGet
);
}
答案 1 :(得分:0)
用firebug检查。您的网址请求如下Validate?item.prop3=
所以你可以做这样的事情来读取值
public ActionResult Validate(string prop3)
{
string prop3Val = Request.QueryString["item.prop3"].ToString();
//your operations with prop3Val
return Json(prop3Val, JsonRequestBehavior.AllowGet);
}