我对MVC很新。我有以下模型类:
public class Store
{
public PriceList PriceListInfo { get; set; }
public IStore storeData;
}
public class PriceList
{
public int id { get; set; }
public string codice { get; set; }
}
public interface IStore
{
[...]
}
public class Silo2Store : IStore
{
public int S2 { get; set; }
public int S3 { get; set; }
}
我希望在我看来使用这个模型:
@model Store
@Html.TextBoxFor(model => ((Silo2Store)Model.storeData).S3)
相应的Controller方法是:
public ActionResult Customer()
{
using (Store t = (Store)Session["Store"])
{
if (t.PriceListInfo == null)
{
t.PriceListInfo = new PriceList();
}
t.PriceListInfo.codice = "XXX";
return View(t);
}
}
我想在我的Controller中检索模型:
[HttpPost]
public ActionResult Customer(Store modelStore)
{
var test = ((Silo2Store)Model.storeData).S3;
}
但Model.storeData
属性未在我的视图中初始化,它是null
。然后,我无法在控制器中检索该值。
我应该改变我的模型吗?
答案 0 :(得分:1)
您必须为IStore
定义自己的模型绑定器。
取自this article on MSDN Magazine about MVC Model Binding:
例如,即使Microsoft .NET Framework为面向对象原则提供了出色的支持,DefaultModelBinder也不支持绑定到抽象基类和接口。