如何在.NET Core中获得后期值

时间:2017-08-16 15:59:23

标签: .net asp.net-mvc asp.net-core

我有一个Customer控制器,它有这两种操作方法。

    [HttpGet]
    public IActionResult Create()
    {
        ViewBag.Title = "Customers";
        return View();
    }

    [HttpPost]
    public IActionResult Create(IFormCollection form)
    {
        return View();
    }

我还创建了一个客户视图。

<form class="form-horizontal" method="post" action="/Customer/Create">
    <div class="form-group">
        <label class="col-lg-2 control-label">FirstName *</label>
        <div class="col-sm-6">
            <input type="text" class="form-control" required name="FirstName">
        </div>
    </div>
    <div class="form-group">
        <label class="col-lg-2 control-label">LastName *</label>
        <div class="col-sm-6">
            <input type="text" class="form-control" required name="LastName">
    </div>
</div>
</form>

如何获取帖子值?每次我提交表单时,都会转到[HttpGet],我想使用[HttpPost]。我是ASP.NET Core的新手,很抱歉这个简单的问题。

2 个答案:

答案 0 :(得分:4)

有几种方法:

  • 向接受帖子的FirstName方法添加LastNameCreate(不区分大小写)字符串参数
  • IFormCollection类型的参数添加到此同一方法,并访问指定值FirstNameLastName
  • 直接访问HttpContext.Request.Form
  • 中的值
  • 访问ModelState属性
  • 中的值
  • 添加POCO类的模型参数,该类包含您要提交的任何值

答案 1 :(得分:2)

在http post动作方法中添加2个参数,该方法与表单元素名称匹配。

[HttpPost]
public IActionResult Create(string firstName,string lastName)
{
    return View();
}

另一种选择是创建具有与表单元素名称匹配的属性的视图模型类。当表单中有许多输入元素并且不想将杂乱添加到操作方法的参数列表时,这非常有用。

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

[HttpPost]
public IActionResult Create(LoginVm model)
{
    // to do : user model.FirstName and model.LastName
    return View();
}

提交表单时,模型绑定器将读取已发布的表单数据并将其映射到视图模型对象属性值。

请记住,视图模型特定于视图。因此,如果您的视图(表单)正在发送5个字段,请创建一个仅包含这5个字段的简单POCO视图模型。