我有一個稍長的概念問題,我想知道是否有人可以幫助我。.Net MVC綁定動態類型到運行時的模型
在MVC中,我建立了一個使用kendoui's framework構建網格的網站。
我網站上的所有網格的構造完全相同,除了他們使用的模型和需要爲每個模型實施的CRUD方法。我設置了每個模型實現瞭如下所示的CRUD方法的接口,以便將邏輯全部集中在一個地方。
//Actual interface has variables getting passed
public interface IKendoModelInterface
{
void Save();
void Read();
void Delete();
}
public class Model1: IKendoModelInterface
{
[Key]
public int IdProperty1 { get; set; }
public int SomeProperty2 { get; set; }
public string SomeProperty3 { get; set; }
public void Save(){
//Implement Save
}
public void Read(){
//Implement Read
}
public void Delete(){
//Implement Delete
}
}
然後加快所有獲得電網工作,我創建了一個抽象的控制器,可以調用被傳遞到它的型號的接口方法所需的腳手架操作方法的寫作。
//Implement the AJAX methods called by the grid
public abstract class KendoGridImplController<T> : Controller where T : class, IKendoModelInterface
{
// Method called from kendo grid
public virtual ActionResult Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<T> createdRecords)
{
//Invoke Create Method for Model and return results
}
public virtual ActionResult Read([DataSourceRequest]DataSourceRequest request, int Id)
{
//Invoke read method for model and return results
}
//Update and Delete also implemented..
}
然後,我只需要一個控制器,每個模型,實現上面的抽象控制器傳遞正在使用的模型類型。
public class ResponsibilityMatrixController : KendoGridImplController<Model1>
{
//Set up the page the grid will be on
public ActionResult Index(int id)
{
return View("SharedGridView", id);
}
//Can override abstract methods if needed but usually won't need to
}
我想知道如果我可以進一步邁進這一步,或者我已經走到了路的盡頭。對我來說,如果我必須爲每個模型創建一個控制器,而這個控制器看起來像是更多的重複代碼,它只會將類型傳遞給抽象控制器並調用相同的View。
昨天我試了很長時間才弄清楚我是否可以動態地將類型賦值給抽象控制器。我設置了通過字符串發回模型類型的東西,我仍然可以調用所需的方法。在失敗的情況下,映射不能在默認情況下在任何控制器操作上完成,因爲在編譯時該類型是未知的。例如
public virtual ActionResult Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<T> createdRecords)
createdRecords不能綁定這樣,如果這是在通過T是一個接口,而不是模式本身,我發現沒有真正的方法將表單數據映射到一個ISN類型的實例在編譯時不知道。
我想知道是否有一種簡單的方法來做這種映射之間的對映類型的實例獲得傳遞,我可以在運行時弄清楚,如果有一些其他方式來設置,我俯瞰或者如果這兩件事情都會變得太多,我就不應該嘗試像這樣的事情,並像我現在這樣爲每個模型構建一個控制器?
可以請給我整個例子,所以可以從中做出一些東西......通過查看thia bastract內容無法弄清楚我們正在談論什麼.....在此先感謝。 – user1220402 2014-01-02 06:32:41