我正在打我认为是一个非常愚蠢的问题,我显然错过了一些简单的事情。
我创建了一个简单的asp.net mvc网站(.net 4.5),并将索引更改为一个简单的表单,我只想回发自己并吐回变量。
这是我的表格
hr = mediaTransform->ProcessInput(0u, sample, 0u));
hr = mediaTransform->ProcessOutput(0u, 1u, transformDataBuffer, &outStatus));
hr = transformDataBuffer->pSample->GetBufferByIndex(0, &mediaBuffer);
这是我的帖子方法
@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" />
}
页面发布时我什么都没收到。同样在调试器中我可以看到该方法被命中,但是即使我填写了表单,所有参数都是null。
我错过了一些明显的东西吗?
答案 0 :(得分:11)
您忘记了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。如果您使用它们,它将使模型绑定毫不费力地工作:
型号:
public class ExampleModel
{
public int empId { 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))进行验证。使用模型有很多好处!