ControllerA的一部分:
public ActionResult Index()
{
ViewBag.Message = "ToolScope Testing";
var Baselines = from b in db.Baselines
orderby b.Name
select b;
ViewBag.Baselines = Baselines;
return View();
}
ControllerA的部分视图
@foreach (var item in @ViewBag.Baselines)
{
<tr>
<li> @Html.ActionLink( item.Name, "Details", "BaseLine",new { id = item.BaselineID }, null) </li>
</tr>
}
item.Name导致问题,但是,如果我使用
之类的东西,它会起作用 <li> @Html.ActionLink( "SomeName", "Details", "BaseLine",new { id = item.BaselineID }, null) </li>
如何获得动态名称,即第一个ActionLink?
P.S。:我是MVC的新手
答案 0 :(得分:1)
我发现你是MVC的新手。好消息,你已经得到了V(iew)和C(ontroller)。现在是掌握M(odel)的时候了。在您的示例中,您使用ViewBag将知识从Controller传输到View。这是模型的典型责任。因此,您需要在Models目录中创建一个新类。它可能看起来像这样:
public class MyFirstModel
{
public IEnumerable<MyCustomType> Baselines { get; set; }
public MyFirstModel() { }
}
编辑您的控制器
public ActionResult Index()
{
ViewBag.Message = "ToolScope Testing";
var baselines = from b in db.Baselines
orderby b.Name
select b;
var model = new MyFirstModel
{
Baselines = baselines
};
return View(model);
}
然后,将其添加到视图的顶部:
@model MvcApplication.Models.MyFirstModel
现在您可以在视图中使用此代码:
@foreach (var item in Model.BaseLines)
{
<tr>
<li> @Html.ActionLink( item.Name, "Details", "BaseLine",new { id = item.BaselineID }, null) </li>
</tr>
}