【问题标题】:Html.Editor not rendering the valueHtml.Editor 不呈现值
【发布时间】:2011-01-27 04:01:43
【问题描述】:

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

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    我希望看到 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)
    

    【讨论】:

    • 谢谢,我从来没有想过我应该将 ViewBag 属性的名称作为字符串传递。这比我想象的要容易得多。顺便说一句,我使用的是强类型帮助器,但是我从作为 ViewBag 传递的强类型类中获得了一些信息。感谢您的帮助!!!
    • 谢谢达林!它也帮助了我
    猜你喜欢
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2014-12-14
    • 2017-10-08
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    相关资源
    最近更新 更多