0

コンテナーとネストされたビューモデルがあり、EditorFor を使用してネストされたビューモデルをレンダリングします。1 つのビューモデル (ConcreteViewModelA :: prop3) のプロパティの 1 つに検証用の remoteAttribute を追加したいと考えています。ただし、検証コントローラー アクション メソッドでは、取得するのは 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)
    }        
}
4

2 に答える 2

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
    );
}
于 2012-06-22T06:27:42.063 に答える
0

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);
    }

ここに画像の説明を入力

于 2012-06-22T06:28:13.463 に答える