[英]How to auto fill fields in a form using @Html.EditorFor in ASP.net MVC 5?
我正在使用Visual Studio为ASP.NET MVC 5自动生成的表单,该表单将信息保存到数据库中。 这是带有实体框架的来自asp.net的带有标准脚手架等的创建视图。
我喜欢表单的外观,但是我需要一个字段(创建日期)至少可以自动填充(但最好是自动填充和隐藏)。 问题是我完全不了解自动生成的代码,而我查找它的努力也没有成功。 我也没有努力去理解它。 我仍然是html helper的初学者,我认为这些都是。
这是我正在使用的表单元素。 中间的部分是我需要更改以自动填充的部分(“创建日期”字段),我认为相关部分正在更改EditorFor。 但我不知道:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>New Patient:</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
... //为简单起见,删除了其他表单项
<div class="form-group">
@Html.LabelFor(model => model.DateCreated,"Date Created", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.DateCreated, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.DateCreated, "", new { @class = "text-danger" })
</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>
}
这部分的自动生成的控制器如下所示:
// GET: Subjects/Create
public ActionResult Create()
{
return View();
}
// POST: Subjects/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,Name,DOB,Male,Female,Address,City,ZIP,PhoneHome,PhoneCell,Email,EmergencyContact,EmergencyContactPhone,EmergencyContactRelationship,ReferredBy,DateCreated,Allergy,AllergyDescription,HighBloodPressure,LowBloodPressure,HeartCondition,Diabetes,Anemia,HighCholesterol,Pacemaker,Epilepsy,Pregnant,Cancer,STD,Pain,PainDescription,Headache,HeadacheDescription,CommonCold,HighBloodPressureConcern,Stress,Depression,Sleep,Menstruation,Fertility,WeightControl,Other")] Subject subject)
{
if (ModelState.IsValid)
{
db.SubjectDatabase.Add(subject);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(subject);
}
如果您不知道如何自动填充和/或隐藏日期创建的表单元素,可以请您指出我可能会自己了解的地方。 我认为我在编程方面很合理,只是我不太了解html helper或控制器中的bind函数。
从您的视图中删除此部分
<div class="form-group">
@Html.LabelFor(model => model.DateCreated,"Date Created", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.DateCreated, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.DateCreated, "", new { @class = "text-danger" })
</div>
</div>
然后,在您的Controller内部,从Bind属性中删除DateCreated并分配DateCreated属性:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,Name,DOB,Male,Female,Address,City,ZIP,PhoneHome,PhoneCell,Email,EmergencyContact,EmergencyContactPhone,EmergencyContactRelationship,ReferredBy,Allergy,AllergyDescription,HighBloodPressure,LowBloodPressure,HeartCondition,Diabetes,Anemia,HighCholesterol,Pacemaker,Epilepsy,Pregnant,Cancer,STD,Pain,PainDescription,Headache,HeadacheDescription,CommonCold,HighBloodPressureConcern,Stress,Depression,Sleep,Menstruation,Fertility,WeightControl,Other")] Subject subject)
{
if (ModelState.IsValid)
{
subject.DateCreated = DateTime.Now; //if you want UTC time, use DateTime.UtcNow
db.SubjectDatabase.Add(subject);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(subject);
}
@Value
也可以通过使用@Html.EditorFor
来@Html.EditorFor
:
例:
@Html.EditorFor(c => c.Propertyname, new { @Value = "5" })
在以下位置可以找到更多信息: Html.EditorFor设置默认值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.