【问题标题】:ASP.NET MVC 4 Send a model - View to ControllerASP.NET MVC 4 发送模型 - 视图到控制器
【发布时间】:2014-07-10 09:58:27
【问题描述】:

我启动了一个 ASP.NET MVC 4 项目。我的模型在 View 和 Controller 之间进行通信时遇到问题。我知道如何将列表发送到视图,但我想从视图中检索此模型以将其发送到控制器。

在我的控制器中:

    public ActionResult Index()
    {
        List<ApplicationModel> listAppli = ApplicationModel.GetListApplications();
        return View(listAppli);
    }


    public ActionResult Delete(ApplicationModel app)
    {
        ApplicationModel.DeleteApplication(app);
        return RedirectToAction("Index");
    }

我的观点是一个列表。我想在删除/详细信息/编辑时检索与该行对应的模型。

@model IEnumerable < Activate.Models.ApplicationModel>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Code)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Name)
    </td>
        @Html.ActionLink("Edit", "Edit", new { id=item }) |
        @Html.ActionLink("Details", "Details", new { id=item }) |
        @Html.ActionLink("Delete", "Delete", new{ id=item } )
    </td>
</tr>
}

在我的 ActionLink 中,我只想发送对象“项目”,但事件中发送的项目是与行不对应的新项目。

它们是我的代码中的错误还是我必须使用其他方式?像另一个在视图和模型之间创建链接的工具,它允许在参数中发送对象?

谢谢。

我的 ApplicationModel 是这样的:

    public ApplicationModel(ApplicationModel app)
    {
        Id = app.Id;
        Code = app.Code;
        Name = app.Name;
    }

【问题讨论】:

  • 尝试将项目更改为应用程序,我在您的模型中看不到“项目”...
  • 像这样:@Html.ActionLink("Delete", "Delete", new{ app=item } ?
  • 是的,否则我迷路了......

标签: asp.net asp.net-mvc-4 razor model html.actionlink


【解决方案1】:

您不能将模型作为参数发布。相反,您应该尝试将 id 发送到您的控制器,然后从数据库中获取模型。

【讨论】:

  • 我用“id=item”和“ApplicationModel id”参数改变了它,但它仍然发送一个新的ApplicationModel实例
  • 好的,我会用 id 来做,但与对象通信不是更好吗?有了对象,我就不必一直在数据库中研究它了……
猜你喜欢
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多