我正在使用 html.beginform,当我单击按钮时,我会转到不同的操作,但我需要传递模型 aspnet c# 中的值

问题描述 投票:0回答:1

我正在使用 html.beginform 开发一个学校项目,当我单击按钮时,我会转到不同的操作,但我需要将视图中 @model 内的值传递给操作。如何才能我这样做?

@using (Html.BeginForm("ExportToexcel_Click", "L_AccessPoint", FormMethod.Post))
{
    <button type="submit" id="cmdAction" runat="server">
        Export To Excel
    </button>
}

在该操作中,我将创建一个文件,为此,我需要将视图中的模型传递给操作 ExportToexcel_Click

[HttpPost]
        public ActionResult ExportToexcel_Click(dadosPassar dp)
        {

            var ds = new dadosPassar();
            ds = dp;

            return RedirectToAction("Index",ds);

        }

这就是我的模型,

    public class dadosPassar
    {
        public List<Stored1>? dados2 { get; set; }
        public List<L_AccessPoint>? Aps { get; set; } = new List<L_AccessPoint>();
        public List<L_Zone>? Zones { get; set; } = new List<L_Zone>();
        public List<int>? ap { get; set; } 
        public DateTime Inicial { get; set; }
        public DateTime Final { get; set; }
        public string? AcessoVisita { get; set; }
        public string? tempo { get; set; }
        public string ApZona { get; set; }
    }

编辑: 我需要将 model.dados2 传递给我的视图,以便我可以使用它,我该怎么做?

这就是我的dados2结构

    public class Stored1
    {
        public short ap_id { get; set; }
        public string ap_name { get; set; }
        public int numeroAcessos { get; set; }
        //public int month { get; set; }
        public int year { get; set; }
        public int MES { get; set; }
        public int DIA { get; set; }

    }
c# asp.net asp.net-mvc asp.net-core asp.net-mvc-4
1个回答
2
投票

我正在使用 html.beginform,当我单击按钮时,我会转到不同的操作?”

是的,这非常明显,它应该根据您的代码重定向到您的

controller
。因为
<button type="submit" runat="server"> Export To Excel </button>
不是正确的方法。你应该尝试下面的方法。

正确方法:

 <input type="submit" id="cmdAction" value="Export To Excel"/>

输出:

但是我需要传递模型 aspnet c# 中的值

您似乎没有在

BeginForm
提交操作中发送任何内容,如下所示。

@using (Html.BeginForm("ExportToexcel_Click", "L_AccessPoint", FormMethod.Post))
{
    <input type="submit" d="cmdAction" value="Export To Excel"/>
}

注意:上面的代码将向您的

ExportToexcel_Click
控制器提交空值,因为您没有在
form post action
内发送任何内容。

演示:

虽然还不清楚你的计划是什么。但是,如果您想在这种情况下加载带有一些预定义数据的页面,您应该初始化

model
中的
controller Index action
,然后以隐藏模式加载该值,如下所示:

初始视图的控制器操作:

public IActionResult Index()
        {
            var ds = new dadosPassar();
            ds.AcessoVisita = "Initial AcessoVisita";
            ds.tempo = "Initial Tempo";
            ds.ApZona = "Initial Ap Zona";
            ds.Final = DateTime.Now;
            return View(ds);
        }

查看:

@model DotNet6MVCWebApp.Models.dadosPassar 

@using (Html.BeginForm("ExportToexcel_Click", "L_AccessPoint", FormMethod.Post))
{
    <input asp-for="AcessoVisita" hidden class="form-control" />
    <input asp-for="tempo" hidden class="form-control" />
    <input asp-for="ApZona" hidden class="form-control" />
    <input type="submit" d="cmdAction" value="Export To Excel"/>
}

单击提交按钮时的控制器:

        [HttpPost]
        public ActionResult ExportToexcel_Click(dadosPassar dp)
        {

            var ds = new dadosPassar();
            ds = dp;

            return RedirectToAction("Index", ds);

        }

输出:

这应该可以解决您当前的问题并指导您将值传递给控制器

POST
方法。

© www.soinside.com 2019 - 2024. All rights reserved.