2013-09-24 65 views
2
我使用BeginForm(),其中的參數是過載10

從View傳遞複雜的對象到控制器

  1. 串actionName
  2. 串controllerName
  3. 對象 routeValues
  4. FormMethod方法

我把我的模型,它是一個複雜的對象早在t傳遞他控制器來查看,在第三個參數。但是,我收到編譯錯誤:

CS1928: 'System.Web.Mvc.HtmlHelper' does not contain a definition for 'BeginForm' and the best extension method overload 'System.Web.Mvc.Html.FormExtensions.BeginForm(System.Web.Mvc.HtmlHelper, string, string, object, System.Web.Mvc.FormMethod)' has some invalid arguments

有沒有辦法將複雜的對象從視圖發佈到控制器?


Edits

我的模式是:

public xxxModel 
{ 
    public string Name { get; set; } 
    public Adddress Address { get; set; } 
} 

我的看法是:

@model namespace.xxxModel 
... 
@using (Html.BeginForm("actionName", "controller", Model, FormMethod.Post) { ..... 
+1

您可以發佈您的BeginForm)代碼(? – Andrew

回答

4

你不能把你的模型類RouteValues PARAMS內。

看那MSDN help
如幫助聲明:

routeValues
類型:System.Object
一個包含路由參數的對象。通過檢查對象的屬性通過反射來檢索參數。此對象通常是使用對象初始值設定項語法創建的

使用這種再

new { MyProp1 = Model.Prop1, MyProp2 = Model.Prop2, MyProp3 = Model.Prop3, ... } 

否則使用窗體中隱藏字段。該ModelBinder的會後

+0

我明白了。所以它僅限於簡單的鍵/值對? –

+1

是的。就個人而言,當有很多參數通過時,我會隱藏領域 – Iridio

0

期間它們映射到模型假設你有一個用戶填寫表單提交,您可以將您的視圖更改爲:

@using(Html.BeginForm("actionName", "Controller", FormMethod.Post) 
{ 
    @Html.TextBoxFor(m => m.Name) 
    @Html.TextBoxFor(m => m.Address) 
} 

你的行動將接受模型參數。

**注:如果表格中,它被張貼到,你可以做的動作的觀點:

@using(Html.BeginForm()) 
{ 
    ... 
} 
相關問題