2017-06-23 32 views
0

創建DropDownListFor我想在ASP.NET MVC與數據庫中創建DropDownListFor,我有一個問題「編譯器錯誤信息:CS1955:不能使用的方法等非可調用成員‘TreeViewModel.TreeItems’。」與數據庫

視圖模型:

public class TreeViewModel 
    { 
     public List<DTree> leafs { get; set; } 
     [Display(Name = "Wybierz gałąź")] 
     public int SelectedRootId { get; set; } 
     public IEnumerable<SelectListItem> TreeItems 
     { 
      get { return new SelectList(leafs, "Id", "Name"); } 
     } 
    } 

查看:

@model Apka.ViewModels.TreeViewModel 
@using (Html.BeginForm("Exercise", "Home", FormMethod.Post)) 
{ 
    @Html.DropDownListFor(m => m.SelectedRootId, Model.TreeItems()); 

    <input type="submit" value="przycisk"/> 
} 

控制器:

public ActionResult Exercise() 
     { 
      var dt = new DbAccess(); 
      var listTree = dt.GetAllTree(); 
      var list = new List<DTree>(); 

      foreach (var row in listTree) 
      { 
       list.Add(
        new DTree 
        { 
         Id = row.Id, 
         Name = row.Name, 
         ParentId = (Convert.ToInt32(row.ParentId) != 0) ? Convert.ToInt32(row.ParentId) : (int?)null 
        }); 
      } 

      TreeViewModel tvm = new TreeViewModel(); 
      tvm.leafs = list; 
      return View(); 
     } 

     [HttpPost] 
     public ActionResult Exercise(TreeViewModel tree) 
     { 
      var id = tree.SelectedRootId; 
      ViewBag.ID = id; 
      return View(); 
     } 
+0

'Model.TreeItems()'應該是'Model.TreeItems' –

+0

變化後此相同 – Duzy

+0

你能給我DTREE的參考?我試圖在一個小提琴手上實現它。或者更好,但在這裏添加你的提琴手(https://dotnetfiddle.net/CsMvc)併發布鏈接? –

回答

0

只是通過模型tvm

return View(tvm) 

here demo

+0

Yeee,在這一刻我注意到我的錯誤,謝謝;) – Duzy

1

TreeItems是TreeViewModel的一員,而不是一個方法,所以你不能用的方法等括號調用它。

在您看來,嘗試改變線

@Html.DropDownListFor(m => m.SelectedRootId, Model.TreeItems()); 

@Html.DropDownListFor(m => m.SelectedRootId, Model.TreeItems); 
0

嗨主要有兩種東西,我們需要在上面的代碼來糾正:

  1. 改變這line @Html.DropDownListFor(m => m.SelectedRootId, Model.TreeItems());想要這樣@Html.DropDownListFor(m => m.SelectedRootId, Model.TreeItems);

提示:從TreeItems去除括號,因爲它不是一種方法

2.Pass的視圖模型給鍛鍊視圖

更正代碼:

public ActionResult Exercise() 
     { 
      var dt = new DbAccess(); 
      var listTree = dt.GetAllTree(); 
      var list = new List<DTree>(); 

      foreach (var row in listTree) 
      { 
       list.Add(
        new DTree 
        { 
         Id = row.Id, 
         Name = row.Name, 
         ParentId = (Convert.ToInt32(row.ParentId) != 0) ? Convert.ToInt32(row.ParentId) : (int?)null 
        }); 
      } 

      TreeViewModel tvm = new TreeViewModel(); 
      tvm.leafs = list; 

      //passed the model 
      return View(tvm); 
     } 

希望它是樂於助人

感謝

KARTHIK