использование dynamic как типа строго типизированного представления MVC

У меня есть страница для создания динамических сущностей.

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

У меня есть два действия:

public ActionResult Create()
  {
      dynamic model = ...
      return View(model);
  }

[HttpPost]
public ActionResult Create(dynamic(1) entity)
  {
     ...      
  }

Ну, проблема в том, что сущность приходит пустой со страницы. Если я изменяю динамику в (1) на реальный тип, он работает нормально.


person Mar    schedule 17.05.2010    source источник
comment
Можете ли вы разместить код для просмотра здесь?   -  person Behnam Esmaili    schedule 07.06.2012


Ответы (1)


Я не уверен в этом на 100%, но я думаю, что проблема в том, что связыватель модели по умолчанию понятия не имеет, что делать с «динамическим» типом, поскольку у него нет определенных свойств для отражения. Вам нужно будет написать свой собственный связыватель модели, который вместо этого будет использовать имена ввода формы, что опасно/ненадежно, поскольку форма может быть изменена на стороне клиента.

Я исследовал динамически типизированные ViewPage раньше (здесь, на SO, на самом деле: Динамически типизированный ViewPage), и я пришли к выводу, что в большинстве ситуаций это действительно ничего не дает. По крайней мере, пока нет (с MVC 3+ может быть другая история).

А вот несколько заметок Фила Хаака по этому поводу: http://haacked.com/archive/2009/08/26/method-missing-csharp-4.aspx

person Matthew Groves    schedule 17.05.2010