use*_*830 7 .net asp.net-mvc asp.net-core
我有一个具有这两种操作方法的客户控制器。
[HttpGet]
public IActionResult Create()
{
ViewBag.Title = "Customers";
return View();
}
[HttpPost]
public IActionResult Create(IFormCollection form)
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
我还创建了一个客户视图。
<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>
Run Code Online (Sandbox Code Playgroud)
我如何获得帖子值?每次我提交表单时,它都会转到[HttpGet]并且我想使用[HttpPost]. 我是 ASP.NET Core 的新手,很抱歉问这个简单的问题。
几种方式:
FirstName和LastName(不区分大小写)字符串参数CreateIFormCollection到这个相同的方法并访问命名的值FirstName和LastNameHttpContext.Request.FormModelState属性访问值将 2 个参数添加到您的 http post 操作方法中,该参数与您的表单元素名称相匹配。
[HttpPost]
public IActionResult Create(string firstName,string lastName)
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是创建视图模型类,其属性与表单元素名称匹配。当表单中有许多输入元素并且不想让操作方法的参数列表变得混乱时,这非常有用。
public class LoginVm
{
public string FirstName { set;get;}
public string LastName { set;get;}
}
Run Code Online (Sandbox Code Playgroud)
和
[HttpPost]
public IActionResult Create(LoginVm model)
{
// to do : user model.FirstName and model.LastName
return View();
}
Run Code Online (Sandbox Code Playgroud)
提交表单时,模型绑定器将读取发布的表单数据并将其映射到视图模型对象属性值。
请记住,视图模型特定于视图。因此,如果您的视图(表单)发送 5 个字段,请创建一个仅包含这 5 个字段的简单 POCO 视图模型。
| 归档时间: |
|
| 查看次数: |
20325 次 |
| 最近记录: |