【问题标题】:Extract key/value pairs from FormCollection in ASP.NET MVC从 ASP.NET MVC 中的 FormCollection 中提取键/值对
【发布时间】:2015-04-11 04:39:11
【问题描述】:

我正在尝试为我们的网站创建一个所有表单都可以指向的通用电子邮件模块。为了使其动态化,我们只想获取表单集合的键值对并将其打印到电子邮件中。

我找到了有关该主题的以下文章,但似乎无法正常工作。我只是得到空白的结果。我究竟做错了什么? http://www.dofactory.com/topic/1038/how-to-extract-key-values-from-formcollection-in-asp-net-mvc-action-method.aspx

这是我的代码

控制器:

public ActionResult Send(FormCollection formCollection)
{
    foreach (var key in formCollection.Keys)
    {
        Body += "<p><b>";
        Body += key.ToString();
        Body += ":</b> ";
        Body += formCollection[key.ToString()];
        Body += "</p>";
    }
}

表格样本:

<form role="form" action="/Email/Send" method="post">
<div class="row">
    <div class="col-md-3 col-md-offset-1">
        <input type="text" class="form-control" id="Name" placeholder="Name">
    </div>
    <div class="col-md-3">
        <input type="email" class="form-control" id="Email" placeholder="Email">
    </div>
    <div class="col-md-3">
        <input type="text" class="form-control" id="Phone" placeholder="Phone">
    </div>
    <div class="col-md-1">
        <input type="hidden" id="Page" value="http://@Request.ServerVariables["SERVER_NAME"]@Request.ServerVariables["URL"]">
        <button type="submit" class="btn btn-ar btn-success">Submit</button>
    </div>
</div>
</form>

我应该添加确实被调用的函数,因为我确实收到了一封包含我的主题的空白电子邮件。我省略了其他执行实际发送以节省空间的代码。

【问题讨论】:

  • 你能展示你调用这个动作的视图吗?您是否使用 POST HTTP 动词调用了此操作?
  • 添加了一个示例表单。我知道当我收到一封电子邮件时表单调用了该函数,它只是空白。

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


【解决方案1】:

您的输入元素没有name 属性。所以实际上没有任何东西被 POST 到服务器——这就是 HTML 表单的工作方式。如果您在浏览器中使用了开发人员工具栏的Network 选项卡,您就会看到这一点。

所以一定要确保在输入元素上放置name 属性:

<input type="text" class="form-control" id="Name" name="Name" placeholder="Name">

只有具有name 属性的输入字段在提交表单时会将其值发送到服务器,您将能够在FormCollection 参数中检索它们的值。

【讨论】:

  • 呸认为它是如此基本的东西。我猜我把名字和身份证弄混了。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
相关资源
最近更新 更多