我对ASP完全陌生.我相信这是一个非常基本的问题

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

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

任何有榜样的建议都将不胜感激.

UPDATE

我知道我必须将数据发回服务器,但这是如何以razorhtml代码和控制器的形式实现的?

推荐答案

您可以使用ViewModels来实现这一点,比如如何将数据从控制器传递到视图.

假设您有一个如下所示的视图模型

public class ReportViewModel
{
   public string Name { set;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
}

OR简单地说,您可以在没有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
}

EDIT : As per the comment

如果你想发布到另一个控制器,你可以使用BeginForm方法的this overload.

@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" />
}

Asp.net相关问答推荐

在 Blazor 中选择框绑定

为什么从 ASP.NET Core Web API 的 ControllerBase 与 Controller 派生?

警告 NETSDK1071 对“Microsoft.AspNetCore.App”的 PackageReference 指定了“2.1.6”版本

Ef core:执行 MaxAsync 时序列不包含任何元素

只接受波斯字符的正则表达式

对于每个请求,RestClient 应该是单例还是新的

未指定 authenticationScheme,并且未找到具有默认身份验证和自定义授权的 DefaultChallengeScheme

我应该如何将 DbContext 实例注入 IHostedService?

如何在 ASP.NET Core 2.0 中设置多个身份验证方案?

如何在 ASP.Net Core 替代方式中获取 Server.MapPath 的绝对路径

如何在 ASP.NET Core 中更改 Swagger 的基本 url

如何设置asp.net身份cookie过期时间

错误请求 - 无效的主机名 ASP.net Visual Studio 2015

如何获取部署在 Azure 网站上的 ASP.NET 5 应用程序的错误详细信息?

ASP.NET 5、EF 7 和 SQLite - SQLite 错误 1:“没有这样的表:博客”

UseSqlServer 方法缺少 MVC 6

ASP.NET WebHooks 和 Signalr 之间的区别

找不到方法:'!!0[] System.Array.Empty()'

如何在没有实体框架的情况下使用 ASP.NET Identity 3.0

IIS 中的 existingResponse="PassThrough" 是什么意思?