我似乎无法使用模型传递表单值。我不想求助于使用单个参数/ FormCollection / Request,然后使用值实例化模型类。
我的模特
//JcSpaceAccount.cs
namespace JcSpaceEntities
{
public class JcSpaceAccount
{
public string FirstName;
public string LastName;
public string Email;
public DateTime DateOfBirth;
}
}
我的观点
//Registration.cshtml
@model JcSpaceEntities.JcSpaceAccount
<!DOCTYPE html>
<div class="form-horizontal">
<h4>JcSpaceAccount</h4>
<hr />
@using (Html.BeginForm("Registration", "Registration", FormMethod.Post))
{
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
@Html.LabelFor(m => m.FirstName)
</div>
<div class="col-md-offset-2 col-md-10">
@Html.TextBoxFor(m => m.FirstName)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
@Html.LabelFor(m => m.LastName)
</div>
<div class="col-md-offset-2 col-md-10">
@Html.TextBoxFor(model => model.LastName)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
@Html.LabelFor(m => m.Email)
</div>
<div class="col-md-offset-2 col-md-10">
@Html.TextBoxFor(model => model.Email)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
@Html.LabelFor(m => m.DateOfBirth)
</div>
<div class="col-md-offset-2 col-md-10">
@Html.TextBoxFor(model => model.DateOfBirth)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
}
</div>
我的控制器
namespace JcSpace.Areas.Registration.Controllers
{
public class RegistrationController : Controller
{
// GET: Registration/Registration
[HttpGet]
public ActionResult Registration()
{
return View();
}
[HttpPost]
public ActionResult Registration(JcSpaceAccount entity)
{
return View();
}
}
}
答案 0 :(得分:1)
您应该将模型更改为:
public class JcSpaceAccount
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public DateTime DateOfBirth { get; set; }
}
问题是默认MVC ModelBinder
适用于properties
,现在您的模型中有fields
。因此默认模型绑定器无法填充它们。
将您的JcSpaceAccount
fields
更改为properties
,即可获得发布的数据。
在你的Post控制器方法中你应该将你的模型设置为@ haim770说:
[HttpPost]
public ActionResult Registration(JcSpaceAccount entity)
{
ViewData.Model = entity; //This line
return View();
}
答案 1 :(得分:0)
在用Registration()
装饰的HttpGet
方法上。
[HttpGet]
public ActionResult Registration()
{
return View(new JcSpaceAccount());
}