C# 带前缀的RemoteAttribute

C# 带前缀的RemoteAttribute,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我有一个容器和嵌套的viewmodels,并使用EditorFor渲染嵌套的viewmodels,我想向一个viewmodel(ConcreteViewModelA::prop3)中的一个属性添加remoteAttribute以进行验证。然而,在validation Controller操作方法上,我得到的是null 我尝试过使用Validate([Bind(Prefix=“item”)]string prop3),但仍然返回为NULL。有什么想法吗 public class SomeConta

我有一个容器和嵌套的viewmodels,并使用EditorFor渲染嵌套的viewmodels,我想向一个viewmodel(ConcreteViewModelA::prop3)中的一个属性添加remoteAttribute以进行验证。然而,在validation 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; }
}
公共类SomeContainer
{
公共列表SomeViewModels{get;set;}
}
公共类ConcreteViewmodelA:ISomethingViewModel
{
公共int prop1{get;set;}
公共int prop2{get;set;}
[远程(“验证”、“远程验证”)]
公共字符串prop3{get;set;}
}
公共类ConcreteViewModelB:ISomethingViewModel
{
公共int prop1{get;set;}
公共int prop2{get;set;}
}
公共界面等距视图模型
{
int prop1{get;set;}
int prop2{get;set;}
}
视图:

@model test.Models.SomeContainer
@使用(Html.BeginForm())
{
@Html.ValidationSummary()
从这里开始

foreach(Model.SomeViewModels中的var项) { @EditorFor(x=>item) } }
尝试定义视图模型:

public class MyViewModel
{
    public string Prop3 { get; set; }
}
然后:

public ActionResult Validate([Bind(Prefix = "item")] MyViewModel model)
{
    return Json(
        !string.IsNullOrEmpty(model.Prop3), 
        JsonRequestBehavior.AllowGet
    );
}

请与firebug联系。您的url请求如下所示
Validate?item.prop3=

所以你可以这样做来读取值

    public ActionResult Validate(string prop3)
    {
        string prop3Val = Request.QueryString["item.prop3"].ToString();

        //your operations with prop3Val
        return Json(prop3Val, JsonRequestBehavior.AllowGet);
    }

是,firebug将URL显示为:[link]Validate?item.prop3=helloI能够使用:public JsonResult Validate([Bind(Prefix=“item”)]ConcreteViewmodelA vm3使其正常工作
    public ActionResult Validate(string prop3)
    {
        string prop3Val = Request.QueryString["item.prop3"].ToString();

        //your operations with prop3Val
        return Json(prop3Val, JsonRequestBehavior.AllowGet);
    }