Я читаю много сообщений с прошлой недели, но ничего не имею о моей проблеме.Bind a ViewBag в @ Html.DropDownList внутри 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 показать строку по умолчанию, и это проблема, она не работает на @ (в знак) внутри @ HTML.DropDownList, он не является желтым, это как выключить, потому что @ в начале строки, как я написал в начале.
Любая идея, как решить эту проблему, не создавая новый SelectList (blah blah), просто преобразуя @ item.Name в String?
Вам не нужен параметр at, потому что вы уже находитесь в кодовом блоке. –
@ErikFunkenbusch, я давно это пробовал, и он не работает: сообщение об ошибке компилятора: CS1973: «System.Web.Mvc.HtmlHelper» не имеет применимого метода с именем «DropDownList», но, похоже, имеет метод расширения с таким именем , Методы расширения не могут динамически отправляться. Рассмотрите возможность использования динамических аргументов или вызова метода расширения без синтаксиса метода расширения. Как я уже сказал, я пробовал много вещей, но он не работает –
user3561028
И вот вы идете. Вы не можете использовать динамику в подобном помощнике. Помещение @ перед ним ничего не изменит. Сначала нужно скопировать значение в локальную переменную, а затем использовать эту локальную переменную в вашем помощнике. –