Html.Editor没有呈现值

时间:2011-01-26 19:50:32

标签: model-view-controller asp.net-mvc-2 asp.net-mvc-3

我在使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的值,任何见解。

感谢您的帮助!

1 个答案:

答案 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)