我在搜索中找不到任何解决问题的方法,这是我的问题:
我正在使用ASP.NET MVC 4和EF 5,我正在尝试从我的数据库中获取值,但此db字段依赖于其他var。
在控制器中:
public ActionResult Products()
{
ViewBag.lang = "ENG";
DataEntities db = new DataEntities();
ViewBag.Categories = db.Categories;
return View();
}
在模板视图中:
<ul>
@{
if (ViewBag.Categories != null)
{
foreach (var cat in ViewBag.Categories )
{
<!-- we need in this case "Name_ENG" -->
var title = "Name_" + @ViewBag.lang;
<li>@cat.(title)</li>
<!-- out: cat.ToString() + "(title)" -->
<li>@cat.(@title)</li>
<!-- out: cat.ToString() + "(" + title.ToString() + ")" -->
<li>@cat.@title</li>
<!-- out: cat.ToString() + title.ToString() -->
}
}
}
</ul>
有没有办法从cat对象获取属性“Name_ENG”,如@ cat.Name_ENG使用字符串?
“在这种情况下,我正在尝试列出产品页面中的al类别。”
非常感谢
答案 0 :(得分:1)
不,绝对不是在c#中。你必须使用反射才能工作(当然语法也会不同)。
我认为更好的选择是创建一个基于字符串输入检索值的方法,比如
public T GetValue<T>(string propertyName)
并在需要时从您的视图中调用
答案 1 :(得分:0)
这是来自msdn的文章。您可以按名称访问EF条目属性。但首先你需要dbContext,其次从视图中访问dbContext是错误的。
示例:
object currentName2 = context.Entry(blog).Property("Name").CurrentValue;
另外,如另一个答案所述,反思:
object value = typeof(YourType).GetProperty("PropertyName").GetValue(yourInstance, null);
答案 2 :(得分:0)
试试这个
<ul>
@{
if (ViewBag.Categories != null)
{
foreach (var cat in ViewBag.Categories )
{
// here you can do something on cat
<text>
<li>@(cat.title)</li>
</text>
}
}
}
</ul>
我个人建议您通过参数将数据传递给视图。并在视图中使用@model(强类型视图)。