2012-02-01 60 views
0

我有視圖模型,查看它使用這個視圖模型和控制器如何採取輸入字段前綴名在MVC3剃刀

鑑於我有輸入字段是這樣的:

@ Html.EditorFor(型號=>模型.TransitApplication.ApplicationDate)

和字段名是TransitApplication_ApplicationDate

我想更新從視圖在數據庫中的一些數據,但有一個問題

控制器更新源

public ActionResult Update(int id, FormCollection collection) 
    { 

     string prefix = "TransitApplication"; 

     TransitApplication transitApplication = transitApplicationRepozitory.GetById(id); 

     if (transitApplication == null) 
      return Content("Error! Not Found!"); 

     if (TryUpdateModel(transitApplication, prefix)) 
     { 
      if (ModelState.IsValid) 
      { 
       transitApplicationRepozitory.Update(transitApplication); 
       transitApplicationRepozitory.Save(); 
       return RedirectToAction("Index"); 
      } 
     } 

     return Content("Error!"); 
    } 

我想利用前綴(TransitApplication)名稱編程,而不是像我有 字符串前綴=「TransitApplication」;

有些建議嗎?

回答

0

眼見形式前綴使用模型屬性的類名建,何談:

if (TryUpdateModel(transitApplication, typeof(TransitApplication).Name))

這將刪除你的魔繩 - 雖然這不是真正的屬性名稱型號類,但我猜如果你重命名類,你可能想重命名模型上的引用屬性 - 雖然它有點脆弱。

另一種方法是你可以使用類似this GetPropertyInfo method的東西,它可以讓你得到屬性名稱,像這樣的字符串var propertyInfo = GetPropertyInfo(yourModelObject, u => u.UserID); - 儘管目前在動作atm中沒有實例化模型類。