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

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

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

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

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

更新

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

谢谢,

解决方法

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

假设你有一个这样的viewmodel

  1. public class Reportviewmodel
  2. {
  3. public string Name { set;get;}
  4. }

并在您的GET操作,

  1. public ActionResult Report()
  2. {
  3. return View(new Reportviewmodel());
  4. }

并且您的视图必须强烈键入Reportviewmodel

  1. @model Reportviewmodel
  2. @using(Html.BeginForm())
  3. {
  4. Report NAme : @Html.TextBoxFor(s=>s.Name)
  5. <input type="submit" value="Generate report" />
  6. }

并在您的控制器中的HttpPost操作方法

  1. [HttpPost]
  2. public ActionResult Report(Reportviewmodel model)
  3. {
  4. //check for model.Name property value now
  5. //to do : Return something
  6. }

或者,简单地说,你可以做到这一点没有POCO类(viewmodels)

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

并在您的HttpPost操作中,使用与文本框名称相同名称的参数。

  1. [HttpPost]
  2. public ActionResult Report(string reportName)
  3. {
  4. //check for reportName parameter value now
  5. //to do : Return something
  6. }

编辑:根据评论

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

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

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

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

  1. public ActionResult Report()
  2. {
  3. var vm = new Reportviewmodel();
  4. vm.Name="SuperManReport";
  5. return View(vm);
  6. }

并在您的视图

  1. @model Reportviewmodel
  2. <h2>@Model.Name</h2>
  3. <p>Can have input field with value set in action method</p>
  4. @using(Html.BeginForm())
  5. {
  6. @Html.TextBoxFor(s=>s.Name)
  7. <input type="submit" />
  8. }

猜你在找的asp.Net相关文章