将数据从一个视图移动到另一个视图

Posted

技术标签:

【中文标题】将数据从一个视图移动到另一个视图【英文标题】:Move data from a view to another view 【发布时间】:2021-01-10 02:03:55 【问题描述】:

我想将数据从 IActionResult 移动到另一个 IActionResult。我已将产品详细信息的数据存储在返回视图 (cdd) 中。如何将其存储到 Tempdata 以便将其传递给另一个视图? 这是我的代码:

[HttpGet]
    public IActionResult Details(int id)
    
        string sql = String.Format(@"SELECT * FROM WBProduct 
                               WHERE Id = 0", id);
        List<Product> lstProduct = DBUtl.GetList<Product>(sql);

        if (lstProduct.Count == 0)
        
            TempData["Message"] = $"Product #id not found";
            TempData["MsgType"] = "warning";
            return Index();
        
        else
        
            Product cdd = lstProduct[0];
            return View(cdd);
            

            
        
    

我想在这个动作方法中调用数据'cdd'。

public IActionResult Create(Product product)
    
        return View("Create", product);
    

这是我对Details Action Method的看法:

@model List<Product>

@if (TempData["Message"] != null)

 <div class="alert alert-@TempData["MsgType"]">
    @TempData["Message"]
</div>


<table class="table table-condensed table-hover">
<tr>
    <th scope="col">ID</th>
    <th scope="col">Product</th>
    <th scope="col">Price</th>
    <th scope="col">Quantity</th>

</tr>


<tr>
    <td>@ViewData["ID"]</td>
    <td>@ViewData["Product"]</td>
    <td>@ViewData["Price"]</td>
    <td>@ViewData["Quantity"]</td>
    <td>
        <a asp-controller="Product"
           asp-action="Delete">
            Delete
        </a>
    </td>

    <td>
        <a asp-controller="Product"
           asp-action="Checkout">
            Checkout
        </a>
    </td>

</tr>

【问题讨论】:

【参考方案1】:

首先,您的详细信息视图中的页面模型应该是Product,而不是List&lt;Product&gt;

@model Product

由于 cdd 是您数据库表中的一条记录,您可以在 Details.cshtml 中设置一个锚点以将 id 发送到 Create 操作。然后在Details 操作中从数据库中获取产品。

Details.cshtml:

<a asp-controller="Product" asp-action="Create" asp-route-id="@ViewData["ID"]">
        Create
</a>

创建:

[HttpGet]
public IActionResult Create(int id)

    string sql = String.Format(@"SELECT * FROM WBProduct 
                           WHERE Id = 0", id);
    List<Product> lstProduct = DBUtl.GetList<Product>(sql);
    Product cdd = lstProduct[0];
    return View("Create", product);

【讨论】:

以上是关于将数据从一个视图移动到另一个视图的主要内容,如果未能解决你的问题,请参考以下文章

如何将多行从一个网格视图移动到另一个 | WPF

SwiftUI:将视图从一个堆栈移动到另一个堆栈?

如何在 Jenkins 中将现有工作从一个视图移动到另一个视图?

将表格视图单元格从一个部分移动到另一个部分但收到错误

将视图控制器从一个情节提要移动或复制到另一个情节提要

是否可以通过拖动将一个视图的子视图移动到另一个视图?