使用动态类型的MVC强类型视图

时间:2010-05-17 14:30:23

标签: asp.net-mvc dynamic view

我有一个用于创建动态实体的页面。

<%@ 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)中为真实类型更改动态,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

我不是100%对此,但我认为问题是默认模型绑定器不知道如何处理'动态'类型,因为它没有任何已定义的属性可以反映出来。您需要编写自己的模型绑定器,而不是使用表单输入名称,这是危险/不可靠的,因为可以在客户端修改表单。

我之前已经探索过动态类型的ViewPages(这里实际上是:Dynamic typed ViewPage),我得出的结论是,在大多数情况下它确实没有给你任何东西。至少,还没有(MVC 3+可能是不同的故事)。

以下是Phil Haack关于此事的一些注释:http://haacked.com/archive/2009/08/26/method-missing-csharp-4.aspx