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

c# – .net核心为什么我可以单独通过密钥获得IFormCollection

发布时间:2020-12-15 23:40:20 所属栏目:百科 来源:网络整理
导读:让我说我有一个 form method="post" action"/user/create" input type="text" name="FirstName" placeholder="FirstName" / button type="submit"Submit/button/form 我想在我的action方法中访问我的输入值FirstName. public IActionResult Create(IFormColl
让我说我有一个

<form method="post" action"/user/create">
    <input type="text" name="FirstName" placeholder="FirstName" />
    <button type="submit">Submit</button>
</form>

我想在我的action方法中访问我的输入值FirstName.

public IActionResult Create(IFormCollection form)
{
    string FirstName = form.Keys["FirstName"];
    return View();
}

它给出错误“无法将[]索引应用于ICollection类型的表达式”

我知道我可以迭代并输入一个if语句,但我发现需要这么多代码.我刚刚开始学习c#,但在Node.js和Python中很容易获得表单的值,例如在节点中.

request.body.FirstName;

而已.我正在寻找类似的东西,没有迭代或创建一个poco类.

谢谢.

解决方法

简单的答案

您可以使用form [“FirstName”]或form.Get(“FirstName”).

编辑:你提到过,你不想创建一个poco.
但是,如果你有多个参数,请考虑一下:

原创内容:

我更喜欢创建一个类(如person,具有FirstName属性)并使用内置序列化的优势.

如果您的表单参数如下所示:

{
  "FirstName": "John","LastName": "Doe"
}

然后你的班级应该是:

public class Person {
  public string FirstName {get;set;}
  public string LastName {get;set;}
}

你的创建方法应该是这样的

public IActionResult Create([FromForm]Person p)
{
    string FirstName = p.FirstName;
}

它会自动将表单参数解析为Person对象.

什么干净的阅读形式params,不是吗;-)?

(编辑:李大同)

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

    推荐文章
      热点阅读