【问题标题】:ASP.NET MVC Passing ID from Controller to ViewASP.NET MVC 将 ID 从控制器传递到视图
【发布时间】: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


【解决方案1】:

我没有发送项目列表,而是使用通过参数传递的 Project.Find(id) 发送了我在数据库模型中定义的特定项目数据,就像你说的那样

【讨论】:

    猜你喜欢
    • 2022-01-10
    • 2014-06-29
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多