2017-06-23 33 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