2015-01-31 29 views
0

我讀了很多帖子,因爲上週但並沒有什麼關於我的問題。綁定在@ Html.DropDownList一個ViewBag一個的WebGrid內的MVC

我有這個簡單的控制器:

public class HomeController : Controller 
{ 
    private AdventureWorks2014Entities db = new AdventureWorks2014Entities(); 

    public ActionResult Index() 
    { 
     var model = db.Products.ToList(); 
     ViewBag.Products = new SelectList(db.Products, "ProductID", "Name"); 
     return View(model); 
    } 
} 

而這個簡單的觀點:

@model IEnumerable<ADWork.Client.Models.Product> 

@{ 
    var grid = new WebGrid(Model); 
} 

@grid.GetHtml(
    columns: grid.Columns(
     grid.Column("ProductID"), 
     grid.Column("Name", null, format:@<span>@Html.DropDownList("Products", @item.Name, new { style = "color:red;" }) </span>), 
      grid.Column("ListPrice", "Price") 
    ) 
) 

現在的問題是DropDownList的。我可以使它很容易這樣的:

@Html.DropDownList("Products", null , new { style = "color:red;" }) 

但我想添加@ item.Name顯示默認的字符串,而這就是問題所在,它不工作的@(at符號)的內@ HTML.DropDownList,它不是黃色的,它就像關閉,因爲像在我開始發佈的行開頭的@。

任何想法如何解決這個問題,而無需創建一個新的SelectList(等等等等),就在@ item.Name轉換爲字符串?

+0

你不需要在,因爲你在一個代碼塊是已。 – 2015-02-01 11:59:14

+0

@ErikFunkenbusch,我很久以前就試過了,它不起作用:編譯器錯誤消息:CS1973:'System.Web.Mvc.HtmlHelper '沒有可用的方法名爲'DropDownList',但似乎有一個名稱爲擴展方法。擴展方法不能動態分派。考慮轉換動態參數或調用擴展方法而不使用擴展方法語法。 就像我說的,我試過很多東西,但它不工作 – user3561028 2015-02-01 15:17:12

+0

而且你去那裏。你不能在這樣的幫手中使用動態。在它前面放一個@不會改變任何東西。您需要先將值複製到本地變量,然後在助手中使用該局部變量。 – 2015-02-01 22:13:13

回答

0

FIND後6天努力和嘗試解決方法!!!!!!!!!!!!我不得不使用@ item.Name創建一個新的字符串,這就是全部! ufff我看到很多人在那裏創建一個ViewBag,後來在DropDOwnList中創建一個新的列表,它沒有任何意義......這裏是答案!

相關問題