Можно ли передать анонимную или динамическую модель представления в представление и обратно в ASP.net MVC 2? - PullRequest
0 голосов
/ 11 февраля 2011

Я нахожусь на проекте asp.net MVC 2 и имею представление, которое наследуется от System.Web.Mvc.ViewPage . Я хотел бы сделать что-то вроде ниже:

public ActionResult Index()
{
    dynamic model = new {Value1= string.Empty, Value2= string.Empty};
    return View(model);
}

[HttpPost]
public ActionResult Index(dynamic model)
{
    var value1 = model.Value1;
    var value2 = model.Value2;
    // do something here.
}

На мой взгляд, в настоящее время у меня есть следующее:

<% using(Html.BeginForm("Index", "Test"))
   {
%>
    <div>
        <label for="Value1">Value1:</label>
        <%=Html.TextBox("Value1", Model.Value1 as string) %>

    </div>
    <div>
        <label for="Value2">Value2:</label>
        <%=Html.Password("Value2", Model.Value2 as string) %>
    </div>
    <div>
        <input type="submit" value="Submit" />
    </div>
<% } %>

Приведенный выше код выдает ошибку «объект не содержит определения« Value1 »и выделяет строку Html.TextBox для Value1.

Я попытался написать свою собственную HTML-форму и входные теги (не забудьте включить атрибуты name и id) и установить значение Model.Value1 и Model.Value2. Это работает для визуализации страницы (и проверки значений); однако при отправке я получаю ту же ошибку, что и раньше.

Можно ли использовать анонимные и / или динамические типы для моих моделей представления в ASP.Net MVC2 или я вынужден написать тонну DTO, которых я надеюсь избежать.

Ответы [ 2 ]

2 голосов
/ 11 февраля 2011

Да, это возможно, если вы объявите свой вид как динамическую модель:

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

Тем не менее, если вы используете стандартные шаблоны MVC 2 (Html.EditorForModel()), вам даже не нужно это делать.

0 голосов
/ 15 апреля 2011

В .NET 4.0 анонимные типы могут быть легко преобразованы в ExpandoObjects, и, таким образом, все проблемы устраняются с помощью издержек самого преобразования.Проверьте здесь

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