【问题标题】:Passing object from View to Controller using html.BeginForm使用 html.BeginForm 将对象从视图传递到控制器
【发布时间】:2019-01-08 02:26:37
【问题描述】:

我有一个 viewModel 对象,我打算用来自通过视图中的表单传递给控制器​​的对象的数据来填充它。目前这是我所拥有的:

查看

<form id="myForm" action="/Area/Controller/myAction" method="post">
                <input id="obj" type="hidden">
             </form>

型号

 public class myViewModel
{
    public string Email { get; set; }
    public string PhoneNumber { get; set; }
}

控制器

[HttpPost]
public ActionResult myAction(myViewModel userInfo= null)
        {
            var model = MethodToFillInViewModel(userInfo);
            return View("Index", model);
        }

这里的大图是我试图从一个页面中获取信息,将其传递给控制器​​以预填充视图模型,然后使用上一步中预填充的字段加载“索引”。截至目前,我正在检索一个空对象,但我不确定为什么,任何人都可以对此有所了解吗? (我是整个 MVC 的新手)

【问题讨论】:

  • 您的索引视图有什么类型?
  • “我对整个 MVC 事物是新手” - 老实说,此时对您来说最好的方法是从一些关于该主题的介绍性教程开始。您的代码存在一些问题。 (1) 你的&lt;input&gt; 没有name 属性,所以它的值永远不会被发送到服务器。 (2) 您的 &lt;input&gt; 在您的视图模型中只能具有两个值之一。您最好使用内置的 HTML 帮助程序,而不是手动制作表单输入。后者当然可以工作,而且相当简单,但首先要使用您可用的工具。
  • 哦,所以您想要从一页输入的信息(而不是保存数据)然后将信息传递到另一页?或者您尝试做一个简单的添加并保存数据,然后在索引页面中显示捕获的数据?或者您想要别的东西?

标签: c# asp.net .net asp.net-mvc


【解决方案1】:

你可以使用标签助手:

@model myViewModel

<form id="myForm" asp-action="myAction" asp-controller="Area" method="post">
    <input asp-for="Email" type="hidden">
    <input asp-for="PhoneNumber" type="hidden">
</form>

【讨论】:

  • OP 是否使用核心 mvc?他没有在帖子中的任何地方提到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 2019-07-06
  • 2018-10-29
相关资源
最近更新 更多