我试图在我的控制器中组织分组数据,以便在我的视图中使用。
我有以下解决方案,但我收到以下错误:
"已经有一个与此命令关联的开放DataReader必须先关闭。"
给出2组相关数据:一组问题及其所属的类别,由以下类别表示
Category
Question
我想按类别对问题进行分组,用外键连接
categoryId
以下是一些示例数据:
分类
category1 { Id = 1, Name = "Info about you" }
category2 { Id = 2, Name = "Info about your pet" }
问题
question1 { categoryId = 1, Text = "What's your name?" }
question2 { categoryId = 1, Text = "What's your age?" }
question3 { categoryId = 2, Text = "What kind of pet do you have?"
question4 { categoryId = 2, Text = "What color is your pet?"
所需的HTML输出类似于
有关您的信息
有关您宠物的信息
所以我的想法是将类别名称和相关问题的信息放入ViewModel中,如下所示:
public class CategoriesWithQuestions() {
public string Name { get; set; }
public IEnumerable<Question> Questions { get; set; }
}
然后在我的控制器中,我会使用查询将数据放入ViewModel:
public ActionResult MyAction() {
var categoriesWithQuestions =
db.Categories()
.Select(category => new CategoriesWithQuestions()
{
Name = category.Name,
Questions = db.Questions().Where(Queryable => q.CategoryId == category.Id)
});
return View(categoriesWithQuestions);
}
在视图中使用ViewModel,通过循环访问ViewModel并访问类别的name属性和相关问题,这两个访问器都在ViewModel类中:
@model IEnumerable<App.ViewModels.CategoriesWithQuestions>
...
@foreach (var category in Model)
{
<h3>@category.Name</h3>
<ul>
@foreach (App.Models.Question Question question in category.Questions)
{
<li>@question.Text</li>
}
</ul>
}
名称很好,但尝试访问视图中的问题时会发生错误。
了解我目前的解决方案或替代(更好)解决方案的想法。
答案 0 :(得分:1)
试试这个
try {
$output = shell_exec($input);
} catch (Exception $e) {
echo '60 seconds passed and response is: ', $e->getMessage(), "\n";
}