我正在达到我认为是一个非常愚蠢的问题,我显然错过了一些简单的问题.
我创建了一个简单的asp.net mvc站点(.net 4.5)并将索引更改为一个简单的表单,我只想回发自己并吐出变量.
这是我的表格
@using(Html.BeginForm()) { <input type="text" class="form-control" id="empId" placeholder="Enter EmployeeId (ex. 999999)"> <input type="text" class="form-control" id="account" placeholder="Enter account)"> <input type="email" class="form-control" id="email" placeholder="Enter email"> <input type="submit" class="btn btn-default" value="Submit" /> }
这是我的帖子方法
[HttpPost] public ActionResult Index(string empId,string account,string email) { return Content(Request["empId"]); }
当页面发布时,我什么也得不到.同样在调试器中我可以看到该方法被命中,但是即使我填写了表单,所有参数都是null.
我错过了一些明显的东西吗
解决方法
你忘记了name属性:
@using(Html.BeginForm()) { <input type="text" class="form-control" name="empId" id="empId" placeholder="Enter EmployeeId (ex. 999999)"> <input type="text" class="form-control" name="account" id="account" placeholder="Enter account)"> <input type="email" class="form-control" name="email" id="email" placeholder="Enter email"> <input type="submit" class="btn btn-default" value="Submit" /> }
我总是建议使用某些字符串或int的模型绑定insTrad.如果您使用它们,它将使模型绑定不费吹灰之力:
模型:
public class ExampleModel { public intempId { get; set; } public string account{ get; set; } public string email{ get; set; } }
在Razor页面中:
@using(Html.BeginForm()) { @Html.EditorFor((m => m.intempId,new { @class = "form-control" } )) @Html.EditorFor((m => m.account,new { @class = "form-control" })) @Html.EditorFor((m => m.email,new { @class = "form-control" })) }
然后在控制器中:
[HttpPost] public ActionResult Index(ExampleModel model) { return Content(model.empId); }
使用该模型,您还可以直接在模型上添加验证等,然后ASP.NET MVC可以在前端使用jquery验证和后端(if(ModelState.IsValid))进行验证.使用模型有很多好处!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。