У меня есть список файлов csv, которые можно выбрать из выпадающего списка. Данные для каждого csv различны. Я забираю файлы csv и хочу отображать данные, используя тот же webgrid. Могу ли я передать динамический объект в webgrid, так что webgrid может отображать столбцы и значения для всех данных csv? ЕслиРазличные объекты для одного и того же элемента управления webgrid
0
A
ответ
0
Да, вы можете использовать динамическую модель представления:
public class MyViewModel
{
public string SelectedCsv { get; set; }
public IEnumerable<SelectListItem> AvailableCsv {
get
{
return new[]
{
new SelectListItem { Value = "foo.csv", Text = "foo.csv" },
new SelectListItem { Value = "bar.csv", Text = "bar.csv" },
new SelectListItem { Value = "baz.csv", Text = "baz.csv" },
};
}
}
public IEnumerable<object> Data { get; set; }
}
и затем контроллер:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
Data = GetData("foo.csv"),
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
model.Data = GetData(model.SelectedCsv);
return View(model);
}
// TODO: move this method away in a repository and
// do the actual parsing of the CSV file
private IEnumerable<object> GetData(string csv)
{
if (csv == "foo.csv")
{
return new[]
{
new { col1 = "value1", col2 = "value2" },
new { col1 = "value1", col2 = "value2" },
};
}
else if (csv == "bar.csv")
{
return new[]
{
new { col1 = "bar value1", col2 = "bar value2", col3 = "bar value3" },
};
}
else if (csv == "baz.csv")
{
return new[]
{
new { col1 = "baz value1" },
new { col1 = "baz value2" },
new { col1 = "baz value3" },
};
}
throw new NotImplementedException();
}
}
и в представлении:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.DropDownListFor(x => x.SelectedCsv, Model.AvailableCsv)
<button type="submit">OK</button>
}
@{
var grid = new WebGrid(Model.Data);
}
@grid.GetHtml()
Насколько разбор CSV-файла касается, если есть одна вещь, вы должны никогда do, это будет roll your own CSV parser.
Смежные вопросы
- 1. Factory создавать различные объекты одного и того же интерфейса
- 2. Объекты jQuery одного и того же элемента не равны?
- 3. Различные маршруты одного и того же компонента
- 4. Различные типы одного и того же объекта
- 5. Различные версии одного и того же кода
- 6. Связывание TextBlock внутри пользовательского элемента управления для свойства зависимостей одного и того же пользовательского элемента управления
- 7. Различные размеры для одного и того же вида на CouchDB
- 8. Заменить последовательность одного и того же элемента
- 9. Различные идентификаторы Spotify для одного и того же трека
- 10. Различные синтаксисы сборки для одного и того же процессора?
- 11. MySql Различные пути выполнения для одного и того же запроса
- 12. Различные исполнения циклов FOR для одного и того же шаблона
- 13. Различные подклассы для одного и того же атрибута
- 14. Различные маршруты для одного и того же компонента
- 15. Различные маршруты для одного и того же ресурса в Rails
- 16. Различные OnClickListeners для разных слов одного и того же TextView
- 17. Различные результаты для одного и того же кода
- 18. Различные ограничения типа для одного и того же экземпляра
- 19. одна функция для запуска одного и того же элемента класса.
- 20. 'itemprop' и 'rel' атрибуты для одного и того же элемента
- 21. JAXB - Несколько значений для одного и того же элемента
- 22. Css правило для выбора детей одного и того же элемента
- 23. Событие выбора Trigger ComboBox для одного и того же элемента
- 24. Определение нескольких возможностей для одного и того же элемента
- 25. Android Множественные реализации одного элемента одного и того же макета
- 26. WhyWaitForControlExist() возвращает false при повторном запросе во время одного и того же элемента управления пользовательского интерфейса?
- 27. Различные значения RequestMapping внутри одного и того же контроллера
- 28. Получить свойства времени выполнения одного и того же элемента
- 29. Различные выходные данные из одного и того же объекта PyQuery
- 30. Различные версии одного и того же приложения в магазине приложений?