编辑 NEW 使用 HttpPost 将数据从控制器传递到视图

Posted

技术标签:

【中文标题】编辑 NEW 使用 HttpPost 将数据从控制器传递到视图【英文标题】:EDIT NEW Pass data from the controller to the view using HttpPost 【发布时间】:2020-05-22 13:01:38 【问题描述】:

我必须将控制器中的方法从 HttpGet 转换为 HttpPost。

该方法返回一个视图给我。

我之前已经通过ViewBag向这个方法发送了值。

目前,当我使用 ViewBag 时,会抛出错误:

加载资源失败:服务器响应状态为 500(内部服务器错误)

只有在我使用 ViewBag 时才会弹出错误

控制者:

[HttpPost]
public ActionResult PartialTabelaEcp(string json)
 
    var nr_days= 31;
    ViewBag.days= nr_days;
    return PartialView("_TableEve");

.cshtml

//for example
@for (int nr_rows = 0; nr_rows < ViewBag.days; nr_rows++)

    var nr_names = nr_rows + 1;

我的预期是什么?

关于如何使用 HttpPost 将数据从控制器发送到视图的帮助/文章

编辑

例如: 型号:

 public partial class userDaty_Model
    
        public int liczbaDniM  get; set; 

        public int numerMiesiacaM  get; set; 

        public int numerRokuM  get; set; 
    

控制器:

liczbaDni = 1;
numerMiesiaca = 2;
numerRoku= 5;

 userDaty_Model userDaty = new userDaty_Model();
            userDaty.liczbaDniM = liczbaDni;
            userDaty.numerRokuM = numerMiesiaca;
            userDaty.numerMiesiacaM = numerRoku;
 return PartialView("_TableEve", userDaty);

现在我有 for (razor) 以及如何将控制器中分配的值放入其中? 查看

   @for (int nr_rows = 0; nr_rows < @aandWhatWriteHere ; nr_rows++)

我试过了:

DayValue : @html.HiddenFor(item => item.userDaty_Model.liczbaDniM);   // does it works?

@for (int nr_rows = 0; nr_rows <  DayValue; nr_rows++)  // it does not work...

【问题讨论】:

问题一、是MVC还是Core?它是什么? 2)您之前发送的代码在哪里?您可以通过Html.Beginform&lt;form&gt; 或ajax 发送。 【参考方案1】:

您可以更轻松地创建一个视图模型并将数据放入其中并>使用填充的视图模型对象返回视图,这可能看起来像这样

视图模型

   public class PartialTableEcpModel
   
      public List<string> Days get; set;
      //And so on

  

控制器

   public ActionResult PartialTabelaEcp(string json)
    
       PartialTableEcpModel tableModel = new PartialTableEcpModel();
       tableModel.Days = new List<string>() "Day1", "Day2", Day3;
       var nr_days= 31;
       ViewBag.days= nr_days;
       return PartialView("_TableEve", tableModel);
   

剃刀视图

   @model PartialTableEcpModel 
   @foreach(var day in Model.Days)
   
    <p>@day</p>//or whatever
   

所以又是一个 Get 请求

用于编辑

您必须将 RazorView.cshtml 顶部的 @model 设置为您的模型,然后您的 Model 属性就是您在控制器中推送的模型

【讨论】:

以上是关于编辑 NEW 使用 HttpPost 将数据从控制器传递到视图的主要内容,如果未能解决你的问题,请参考以下文章

无法将数据从视图发送到控制器 Action .NET MVC

编辑表单不起作用,数据正在传递到服务器但不是 httpPost 方法

如何将模型作为参数传递给 ASP.NET MVC 中的 [HttpPost] ActionMethod?

发送 POST 到 URL

怎么用java模拟浏览器提交html页面的表单数据

在不同的控制器动作方法之间传递数据