【发布时间】:2018-05-17 14:12:20
【问题描述】:
您好,我正在尝试将来自 URL 的 ID 从控制器传递到视图。我还传递了一个视图模型,其中包含两个具有数据库数据的模型。还有另一种方法吗?路由图已设置为发送 ID。
URL 将是http://localhost:55147/Home/ViewProject/8,显然 8 是项目的 ID,但它似乎没有得到这个。我通过 URL.Action 将 ID 传递给 ViewProject 控制器函数,其中 ID 通过另一个页面上的参数传递。
这是我的控制器:
public ActionResult ViewProject( int? id )
{
if( id == null )
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
BextecODBEntities DB = new BextecODBEntities();
var mymodel = new Multipledata();
mymodel.projectss = DB.Projects.ToList();
mymodel.projectnotess = DB.ProjectNotes.ToList();
return View("ViewProject", mymodel);
}
这是我的观点:
@foreach(var item in Model.projectss)
{
if( item.ID.ToString() == Html.ViewContext.RouteData.Values["id"].ToString() )
{
@Html.DisplayText("You have clicked on Project ID:" + item.ID.ToString())
}
}
我的多数据模型包含:
public IEnumerable<Projects> projectss { get; set; }
public IEnumerable<ProjectNotes> projectnotess { get; set; }
【问题讨论】:
-
数据在模型中传递,而不是通过直接访问请求、路由数据或其他方式。在你的模型上放置一个
ID属性并设置它 -
您好,感谢您的回复。我该怎么做?因为每个 mymodel 都有多个记录,每个记录都有自己的唯一 ID。
-
将
ID属性添加到Multipledata并设置它,就像设置projects属性一样。使用Model.ID访问它。 -
我的多数据模型包含:public IEnumerable
projects { get;放; } 公共 IEnumerable projectnotess { 获取;放;那么如何为数据库 ID 字段中的实际 ID 的每条记录分配一个 ID? -
@ZackAntonyBucci 评论没有多大意义。 EF 将加载项目属性。如果您的表有一个 ID 字段,那么您的
Project类应该有一个ID属性。 您不必填写,EF 会。您的代码虽然加载 all 项目而不是带有与 URL 匹配的ID的项目。您是否尝试将相同的模型用于列表视图和详细视图?
标签: asp.net-mvc url routedata