Model view controller 编辑器不呈现该值

Model view controller 编辑器不呈现该值,model-view-controller,asp.net-mvc-2,asp.net-mvc-3,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-bo

我在制作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>
//分配值
ViewBag.BeginDate=seabginend.BeginDate;
//看法
@编辑器(“Begin”,ViewBag.BeginDate作为日期时间?)
//HTML源
我想看看2011年1月19日12:00:00 AM的值,这是ViewBag.BeginDate的值,任何见解

谢谢你的帮助

我希望看到2011年1月19日12:00:00 AM的值,这是ViewBag.BeginDate的值

通过将
Begin
作为第一个参数传递给
Html.Editor
helper,您不能期望出现这种情况。第二个参数的作用与您认为的不同。它只是将一些额外的视图数据发送到编辑器模板,但您绑定到的原始值称为
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)

谢谢,我从来没有想过我应该以字符串的形式传递ViewBag属性的名称。这比我想象的容易多了。顺便说一下,我使用的是强类型帮助器,但我有一些强类型类的信息,我将其作为ViewBag传递。感谢你的帮助!!!谢谢你,达林!这对我也有帮助