0

私が抱えている問題は、GetValue("Budget") で取得しようとするとカスタム モデル バインダーが null になることですが、ご覧のとおり、バインダーにはプレフィックスが含まれています。そこにあるメタデータを見ると、すべてのキーも取得できますが、それでもNULLです。NULL を取得する理由を誰でも説明できますか?

マイ ビュー > List.cshtml

for (var i = 0; i < Model.Budget.BudgetRader.Count; i++)
    {

        if (Model.Budget.BudgetRader[i].Konto != -1) { 
               <tr id="@Model.Budget.BudgetRader[i].RadNr1 +'-'+ @Model.Budget.BudgetRader[i].RadNr2 +"-"+ @Model.Budget.BudgetRader[i].RadNr3">        
                   <td>@Html.TextBoxFor(m => Model.Budget.BudgetRader[i].BudgetBelopp)</td>
               </tr>}
    }

私のViewModel > BudgetListViewModel

public class BudgetListViewModel
{        
    public Budget Budget { get; set; }

    public IList<BudgetRad> BudgetRaderList { get; set; }        
}

マイ カスタム モデル バインダー > BudgetListModelBinder

    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {


        //var budgetListViewModel = (BudgetListViewModel) bindingContext.Model;

        //true
        var exists = bindingContext.ValueProvider.ContainsPrefix("Budget"); 

        // gives null
        var tmp = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); 

        // gives null
        var tmp2 = controllerContext.HttpContext.Request.Form.Get("Budget"); 


    }

グローバサ

private void RegisterModelBinders()
    {
        ModelBinders.Binders.Add(typeof(BudgetListViewModel), new BudgetListModelBinder());
    }
4

0 に答える 0