【问题标题】:Passing a View Model within a URL.Action在 URL.Action 中传递视图模型
【发布时间】:2019-05-21 01:33:45
【问题描述】:

我正在尝试将视图模型传递给我的控制器。

 @if (User.IsInRole("Customer"))
            {

                <input type="button" class="btn btn-danger" value="Rent Car" onclick="location.href='@Url.Action("PassingCar", "Bookings", new { id = item.VehicleID, Model = Model.Booking })'" />

            }

我正在使用动态模型,因此我可以在此视图中同时使用 Vehicle 和 Booking。

当代码到达我的控制器时,ID 已被传递,但 ViewModel 中的数据消失了。

 public ActionResult PassingCar( int id, CreateBookingViewModel createdModel)
        {
            ///Checks that Vehicle exists in DB and v property is not null
            if (v == null)
            {
                return HttpNotFound();
            }
            else
            {


                /// sets the Vehicle attribute of the BookingViewModel to vehicle passed over
                createdModel.Vehicle = v;

            }
            return RedirectToAction("Create", "Bookings");
        }

如果有人知道我做错了什么,将不胜感激。

【问题讨论】:

    标签: c# asp.net model-view-controller asp.net-mvc-5 viewmodel


    【解决方案1】:

    你能发布你最终到达的 URL 的文本吗?

    但猜测一下,您可能希望将 Model = Model.Booking 替换为 Model = JSON.Encode(Model.Booking)

    哦。还有一个概率。您在 Url Action 中将参数命名为“Model”,但在方法签名中命名为“createdModel”。

    【讨论】:

    • 所以在我点击按钮之前页面的 URL 中包含了开始日期和结束日期,这就是我想要的。 localhost:52574/Vehicles/…
    • @MarkMcAllister 单击按钮后是否有 URL?我希望它包括 /Bookings/PassingCar 或类似的。
    • localhost:52574/Bookings/Create 只是视图的标准名称,似乎没有任何继承。
    • @MarkMcAllister 啊,这是最后一步,我们正试图介于两者之间。我怀疑对我的答案的编辑是原因。 URL 中的“Model”,方法参数中的“createdModel”。
    • 找出问题所在。谢谢你的帮助。如果有人在谷歌上搜索同样的问题,我会发布答案。
    【解决方案2】:

    我发现了我的问题,所以我将为遇到相同问题的任何人发布答案,并找到此线程。

    由于 URL Action 中的两个名称都称为 Model,这将创建一个传递给视图的全新 ViewModel。这是因为在我的视图中,模型是我创建的动态模型,因此正在创建的对象是新的 ExpandoObject。

    一个解决方案是将 ExpandoObject 转换为正确的类型,但我发现了一种不同的方法来解决我的特定问题,只需使用 TempData。无论哪种方式都会奏效。

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多