在我的ASP.Net MVC 3項目中,我想有一個基類模型對象,它具有某些屬性,然後我將在我的應用程序中的所有其他模型中使用(或至少其中大部分)。這樣,使用這些派生模型的視圖也將具有基類模型屬性。從另一個模型導出模型
基類模型屬性可以在基類控制器中設置,然後以某種方式我需要用相同的數據填充派生模型。關於如何最好地完成任務的任何建議?
或者我應該考慮以某種方式創建我自己的DefaultModelBinder?我對這裏的選擇有些困惑。就好像你不能說。 :)
示例代碼
基本型號
public class ElkModel
{
public bool IsAdministrator { get; set; }
}
衍生型號
public class UserModel : ElkModel
{
[HiddenInput]
public int User_ID { get; set; }
// Other properties specific to this model
}
因此,在基本控制器
private BaseModel baseModel;
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
baseModel = new baseModel();
baseModel.MyProperty = "test";
base.OnActionExecuting(filterContext);
}
而派生控制器的操作方法
public ActionResult Index()
{
// Derives from the base model in the base controller
UserModel model = new UserModel();
// model.IsAdministrator where IsAdministrator is a property of the base Model not UserModel
return View(model);
}
嗨保羅,感謝您的快速響應。我認爲我們只在這裏處理輸入Model/ViewModels。我將使用基本模型屬性來觸發頁面上的某些顯示(例如,Model.IsAdministrator)。 – beaudetious 2011-01-25 16:04:17
好吧,所以我明白我將如何使用,例如,重寫(是一個單詞?)基本控制器中的OnActionExecuting方法。我有一個模型類作爲該控制器的私有成員,並相應地填充它的屬性。我將如何將基礎模型屬性導入我的模型中。在原始問題中查看我上面更新的代碼示例。 – beaudetious 2011-01-25 16:11:38