Найдено результатов: 1

Asp.net MVC User Control ViewData

Когда контроллер отображает представление на основе модели, вы можете получить свойства из коллекции ViewData с помощью индексатора (т. е. ViewData["Property"]). Однако у меня есть общий пользовательский элемент управления, который я попытался вызвать, используя следующее:

return View("Message", new { DisplayMessage = "This is a test" });

и на моем пульте управления сообщениями у меня было это:

<%= ViewData["DisplayMessage"] %>

Я думаю, что это будет правильно отображать DisplayMessage, однако null возвращается. После большой дозы возни вокруг, я, наконец, создал класс "MessageData" для того, чтобы строго ввести свой пользовательский элемент управления:

public class MessageControl : ViewUserControl<MessageData>

и теперь этот звонок работает:

return View("Message", new MessageData() { DisplayMessage = "This is a test" });

и может отображаться следующим образом:

<%= ViewData.Model.DisplayMessage %>

Почему бы не добавить свойство DisplayMessage к свойству ViewData (т. е. ViewData["DisplayMessage"]) сбор без сильного ввода пользовательского элемента управления? Это что, специально придумано? Разве не логично, что ViewData будет содержать ключ для "DisplayMessage"?

asp.net   asp.net-mvc   viewdata   viewusercontrol    

413   2   22:19, 19th August, 2020