Razor 为什么模型数据从视图传递到控制器为空?

Razor 为什么模型数据从视图传递到控制器为空?,razor,.net-core,Razor,.net Core,我有一个视图,在其中我循环浏览模型列表并显示数据。我试图通过点击链接将该模型传递给另一个控制器/操作。正在传递的数据为空。我该怎么做 视图: @Model TransactionViewModel 日期 数量 标签号 付款方式 前期余额 经常项目差额 描述 评论 收据 @if(Model!=null&&Model.Transactions!=null) { @foreach(var Tran in@Model.Transactions) { @传输时间戳 @交通费 @Tran.FullTagNu

我有一个视图,在其中我循环浏览模型列表并显示数据。我试图通过点击链接将该模型传递给另一个控制器/操作。正在传递的数据为空。我该怎么做

视图:

@Model TransactionViewModel
日期
数量
标签号
付款方式
前期余额
经常项目差额
描述
评论
收据
@if(Model!=null&&Model.Transactions!=null)
{
@foreach(var Tran in@Model.Transactions)
{
@传输时间戳
@交通费
@Tran.FullTagNum
@交易支付法
@交易前余额
@Tran.NewBalance
@交易支付说明
@交通评论
@if(传输处理\u参考\u字符串!=null)
{
/*如何传入动态变量Tran*/
}
其他的
{
无法使用的
}
}
}
控制器操作:

public async Task<IActionResult> PrintReceipt(ReplenishmentRecordResponse ReceiptData){
    //data manipulation
}
公共异步任务打印收据(RequirementRecordResponse ReceiptData){
//数据操纵
}
型号:

public class TransactionViewModel
{
    [Display(Name = "From", Prompt = "Starting Date")]
    public DateTime StartDate { get; set; }
    [Display(Name = "To", Prompt = "Ending Date")]
    public DateTime EndDate { get; set; }
    public List<ReplenishmentRecordResponse> Transactions { get; set; }
}
公共类TransactionViewModel
{
[显示(Name=“From”,Prompt=“开始日期”)]
公共日期时间起始日期{get;set;}
[显示(Name=“To”,Prompt=“结束日期”)]
公共日期时间结束日期{get;set;}
公共列表事务{get;set;}
}

我将利用
asp路由id
asp页面处理程序
TagHelpers将您的id路由回PrintReceive()方法

您可以有如下按钮:

<button id="btnDownload" class="btn btn-info" asp-route-id="@HttpContext.Request.Query["id"]" asp-page-handler="PrintReceipt" type="submit">Submit</button>
您可能需要在if块中添加
@Tran.Tran.Processing\u ref\u string

下面是一些很好的链接,它们也可以引导你朝着正确的方向前进。我希望这有帮助


我将利用
asp路由id
asp页面处理程序
TagHelpers将您的id路由回PrintReceive()方法

您可以有如下按钮:

<button id="btnDownload" class="btn btn-info" asp-route-id="@HttpContext.Request.Query["id"]" asp-page-handler="PrintReceipt" type="submit">Submit</button>
您可能需要在if块中添加
@Tran.Tran.Processing\u ref\u string

下面是一些很好的链接,它们也可以引导你朝着正确的方向前进。我希望这有帮助


标签助手非常漂亮。我刚刚意识到一些事情,将更新我的答案。在您的情况下,您需要asp路由id=[@Tran.Tran.Processing\u ref\u string]。您可能还需要在if语句中添加@Tran.Processing_ref_字符串。我正在尝试传入Tran对象,它是一个列表元素。有可能吗?或者我应该按照传统的方式使用id查询web api并获取数据吗?您应该能够同时做到这两个方面。您是否尝试过传入类似PrintReceipt(Transaction)的内容{var trans=Transaction.trans;}。正在填充列表对象吗?据我所知,无法传递复杂对象(我尝试过,但值为null)。所以,我按照你的建议,将id传递给控制器,在我的控制器中,我处理数据拉取。谢谢。标签助手很漂亮。我刚刚意识到一些事情,将更新我的答案。在您的情况下,您需要asp路由id=[@Tran.Tran.Processing\u ref\u string]。您可能还需要在if语句中添加@Tran.Processing_ref_字符串。我正在尝试传入Tran对象,它是一个列表元素。有可能吗?或者我应该按照传统的方式使用id查询web api并获取数据吗?您应该能够同时做到这两个方面。您是否尝试过传入类似PrintReceipt(Transaction)的内容{var trans=Transaction.trans;}。正在填充列表对象吗?据我所知,无法传递复杂对象(我尝试过,但值为null)。所以,我按照你的建议,将id传递给控制器,在我的控制器中,我处理数据拉取。非常感谢。
public async Task<IActionResult> PrintReceipt(string id){
    //do something 
}