私が抱えている問題は、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());
}