За написание ViewDataDictionary в ASP.NET MVC Framework - PullRequest
0 голосов
/ 26 ноября 2009

Вместо:

public ActionResult Index()
{
    ViewData["foo"] = _repository.GetFoos().ToList();
    ViewData["bar"] = new string[] { "blah" };
    ViewData["baz"] = "";
    return View();
}

и затем:

public ActionResult Index(string baz)
{
    // Do stuff...

    ViewData["foo"] = _repository.GetFoos().ToList();
    ViewData["bar"] = new string[] { "blah" };
    ViewData["baz"] = baz;
    return View();
}

Я думал о том, как уменьшить количество опечаток, сделав ViewData немного более структурированным, без необходимости добавлять (еще) другой класс ViewModel. Я придумал следующее:

public ActionResult Index()
{
    var foo = _repository.GetFoos().ToList();
    var bar = new string[] { "blah" };
    var baz = null;

    ViewData = new ViewDataDictionary {
        {"foo", foo},
        {"bar", bar},
        {"baz", baz }
    };

    return View();
}

public ActionResult Index(string baz)
{
    var foo = _repository.GetFoos().ToList();
    var bar = new string[] { "blah" };
    var baz = null;

    // Do Stuff...

    ViewData = new ViewDataDictionary {
        {"foo", foo},
        {"bar", bar},
        {"baz", baz}
    };

    return View();
}

Это плохая идея переписать ViewData таким образом? Я уверен, что это не вызовет проблем с RenderPartials, но я больше не смогу вызывать RenderAction в представлении?

1 Ответ

1 голос
/ 26 ноября 2009

Это плохая идея переписать ViewData как это?

Нет. Это не плохая идея. Но это не распространено.

Я почти уверен это не вызовет проблем с RenderPartials, но я бы больше не быть в состоянии вызвать RenderAction в посмотреть

Вы должны быть в порядке со всем этим.

Но имейте лок в вашем коде, не переписывая ViewData и после.

Вы не устранили опечатку r. У вас есть одинаковое количество магических струн в обоих случаях.

Так что я бы все же рекомендовал добавить ViewModel . Для простоты просто определите вашу ViewModel в классе контроллера, чтобы все было в одном месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...