2011-01-26 100 views
1

我在使HTML页面呈现期望HTML时出现问题。Html.Editor未呈现值

下面是这种情况:

// 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> 

我散斑看到2011年1月19日12:00:00 AM的值是ViewBag.BeginDate的价值,任何见解。

感谢您的帮助!

回答

3

我被蒙上了斑驳见2011年1月19日12:00:00 AM的值,它是

无法通过传递Begin作为第一个参数想到这样的事情ViewBag.BeginDate

的价值到 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) 
+0

谢谢,我从来没有想到,我应该通过ViewBag的名字属性作为一个字符串。这比我想象的要容易得多。顺便说一下,我使用强类型助手,但我有一些信息超出强类型,我通过ViewBag。感谢你的帮助!!! – roncansan 2011-01-26 20:12:21