我在使Html.Editor呈现所需的HTML时遇到问题。
以下是该方案:
// assign the value
ViewBag.BeginDate = seaBeginEnd.beginDate;
//View
@Html.Editor("Begin", ViewBag.BeginDate as DateTime?)
//HTML Source
<div class="editor-field">
<input class="text-box single-line" id="Begin" name="Begin" type="text" value="" />
</div>
我想看看 1/19/2011 12:00:00 AM 的值,这是ViewBag.BeginDate的值,任何见解。
感谢您的帮助!
答案 0 :(得分:3)
我打算看到值为1/19/2011 12:00:00 AM,这是ViewBag.BeginDate的值
通过将Begin
作为第一个参数传递给Html.Editor
帮助程序,您不能指望这样的事情。第二个参数不符合您的想法。它只是将一些额外的视图数据发送到编辑器模板,但是您绑定的原始值称为Begin
,因此您应该为其分配值。像这样:
public ActionResult Index()
{
ViewBag.Begin = DateTime.Now;
return View();
}
然后:
@Html.Editor("Begin")
显然,每当我看到有人使用ViewBag / ViewData而不是强类型帮助者时,我觉得有义务推荐视图模型和强类型助手。例如:
型号:
public class MyViewModel
{
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime Date { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel
{
Date = DateTime.Now
});
}
}
和相应的强类型视图:
@model AppName.Models.MyViewModel
@Html.EditorFor(x => x.Date)