加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 19:21:12 所属栏目:asp.Net 来源:网络整理
导读:我对ASP.Net完全陌生,我相信这是一个非常基本的问题 我有一个视图,其中有一个链接来生成报告,但是能够生成报告,我必须要求用户提供一个合适的文本名称。 到目前为止,我已经能够传递数据从服务器到使用从我的控制器传递的视图查看,但我不知道如何传递数
我对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" />
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读