2015-01-31 41 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中创建一个新的列表,它没有任何意义......这里是答案!

相关问题