Html.Editor не отображает значение - PullRequest
1 голос
/ 26 января 2011

У меня проблемы с созданием 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 Ответ

3 голосов
/ 26 января 2011

Я писал, чтобы увидеть значение 19.01.2011 12:00:00, которое является значением 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...