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

前端之家收集整理的这篇文章主要介绍了ASP.Net MVC如何将数据从视图传递到控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对ASP.Net完全陌生,我相信这是一个非常基本的问题
我有一个视图,其中有一个链接生成报告,但是能够生成报告,我必须要求用户提供一个合适的文本名称

到目前为止,我已经能够传递数据从服务器到使用从我的控制器传递的视图查看,但我不知道如何传递数据从视图到我的控制器。

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

任何建议与示例将不胜感激。

更新

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

谢谢,

解决方法

你可以用viewmodels做,就像你从控制器传递数据到视图。

假设你有一个这样的viewmodel

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
}

编辑:根据评论

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

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

将数据从操作方法传递到视图?

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

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相关文章