我有一个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的新手,很抱歉这个简单的问题。
答案 0 :(得分:4)
有几种方法:
FirstName
方法添加LastName
和Create
(不区分大小写)字符串参数IFormCollection
类型的参数添加到此同一方法,并访问指定值FirstName
和LastName
HttpContext.Request.Form
ModelState
属性答案 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视图模型。