ASP.Net MVC 如何将数据从视图传递给控制器

 2023-02-17    385  

问题描述

我完全是ASP.NET,我相信这是一个非常基本的问题
我有一个视图,其中有一个链接生成报告,但能够生成报告,我必须要求用户提供合适的文本名称.

到目前为止,我已经能够通过服务器传递数据来查看使用从我的控制器传递的模型来查看,但我不确定如何将数据传递到我的控制器.

ASP.Net MVC 如何将数据从视图传递给控制器

在这种情况下,我只需要将字符串从视图传递到控制器.

将欣赏举例的任何建议.

更新

我理解我必须将数据发布回服务器,但这以Razorhtml代码和控制器的形式实现了如何实现?

推荐答案

您可以使用像素如何通过从控制器传递数据来查看.

假设您有一个像这样的视图,如

public class ReportViewModel
{
   public string Name { set;get;}
}

和在您的GET行动中,

public ActionResult Report()
{
  return View(new ReportViewModel());
}

,您的视图必须强烈地键入ReportViewModel

@model ReportViewModel
@using(Html.BeginForm())
{
  Report NAme : @Html.TextBoxFor(s=>s.Name)
  <input type="submit" value="Generate report" />
}

以及在控制器中的 httppost 操作方法

[HttpPost]
public ActionResult Report(ReportViewModel model)
{
  //check for model.Name property value now
  //to do : Return something
}

或简单地,您可以在没有POCO类(ViewModels)

的情况下执行此操作

@using(Html.BeginForm())
{
   <input type="text" name="reportName" />
   <input type="submit" />
}

和在httppost操作中,使用与文本框名称相同的参数.

[HttpPost]
public ActionResult Report(string reportName)
{
  //check for reportName parameter value now
  //to do : Return something
}

编辑: 根据评论

如果要发布到另一个控制器,您可以使用此初始化方法的过载.

@using(Html.BeginForm("Report","SomeOtherControllerName"))
{
   <input type="text" name="reportName" />
   <input type="submit" />
}

通过动作方法传递数据以查看?

您可以使用相同的视图模型,只需在Get Action方法中设置属性值

public ActionResult Report()
{
  var vm = new ReportViewModel();
  vm.Name="SuperManReport";
  return View(vm);
}

和您的视图

@model ReportViewModel
<h2>@Model.Name</h2>
<p>Can have input field with value set in action method</p>
@using(Html.BeginForm())
{
  @Html.TextBoxFor(s=>s.Name)
  <input type="submit" />
}

如果您不想要/需要发布:

@Html.ActionLink("link caption", "actionName", new { Model.Page })  // view's controller
@Html.ActionLink("link caption", "actionName", "controllerName", new { reportID = 1 }, null);

[HttpGet]
public ActionResult actionName(int reportID)
{

请注意,新{}部分中的ReportID在操作参数中匹配ReportID,您可以以这种方式添加任意数量的参数,但任何超过2或3(有些将争辩)您应该通过模型通过帖子(根据其他答案)

编辑:添加注释中指出的正确过载的null.有许多过载,如果指定了操作+控制器,则需要rutevalues和htmlattributes.如果没有控制器(只需标题+动作),只需要routeValues,但可能是最佳实践,以始终指定两者.

其他推荐答案

<form action="myController/myAction" method="POST">
 <input type="text" name="valueINeed" />
 <input type="submit" value="View Report" />
</form>

控制器:

[HttpPost]
public ActionResult myAction(string valueINeed)
{
   //....
}

以上所述是小编给大家介绍的ASP.Net MVC 如何将数据从视图传递给控制器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34211.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。