ASP.NET Core 2.0:如何无需新增输入,将表单外数据传至控制器
解决办法:使用隐藏表单字段提交额外模型值
嘿,这个需求很容易实现!你只需要在表单中添加隐藏输入字段,就能把MinUppercase和MinLowercase这两个模型值和其他表单数据一起提交,而且不会在页面上显示额外的输入控件。
隐藏字段的作用就是在页面不可见,但表单提交时会自动携带它的值,正好符合你的需求。具体做法是在你的<form>标签内部添加两个type="hidden"的输入框,用asp-for绑定对应的模型属性:
<form asp-action="Middle" asp-controller="Home" method="POST" class="form-wrapper"> <!-- 添加这两个隐藏字段,位置可以放在表单内任意不影响布局的地方 --> <input asp-for="MinUppercase" type="hidden" /> <input asp-for="MinLowercase" type="hidden" /> <!-- 原有的表单内容保持不变 --> <div class="input-group"> <label>Login:</label> <input id="Login" asp-for="Login" type="text" class="input" size="35"> </div> <div class="input-group"> <label>Password:</label> <input id="Password" asp-for="Password" type="Password" class="input" size="35"> </div> <div class="input-group"> <label>Your Regex Description:</label> <input id="Description" asp-for="Description" type="text" class="input" size="35" value=@Model.Description> </div> <div class="input-group"> <label>Your Regex:</label> <input id="Reg" asp-for="Reg" type="text" class="input" size="35" value=@Model.Reg> </div> <div class="input-group"> <a asp-controller="Home" asp-action="CreateRegex"> <button type="button" class="btn btn-danger">Back</button> </a> <button class="btn btn-success">Create</button> </div> </form>
为什么这样可行?
- ASP.NET Core的模型绑定系统会自动识别表单中带有正确
name属性的字段(asp-for会帮你自动生成和模型属性匹配的name和value)。 - 隐藏字段的值会从当前的
@Model中自动填充,提交表单时就会和Login、Password等字段一起发送到Home/Middle方法。 - 只要你的
UserModel中MinUppercase和MinLowercase属性有公开的getter和setter,模型绑定就能顺利把这两个值绑定到方法的参数实例里。
这样既不用新增可见的输入控件,又能把这两个变量的数据一起提交啦~
内容的提问来源于stack exchange,提问作者Lukasz_K_K
相关产品推荐
相关产品推荐

