2012-10-25 41 views
0

視圖:如何發佈通過多個局部視圖數據在MVC3

@model 
@using (Html.BeginForm("action", "Controller")) 
{ 
    @html.action("action1","controller1") //use model1 
    @html.action("action2","controller2") //use model2 
    @html.action("action3","controller3") //use model3 
    <button type="submit">submit</button> 
} 

父模型

{ 
    public model model1{get; set;} 

    public model model2{get; set;} 

    public model model3{get; set;} 
} 

控制器

[httppost] 
public ActionResult Submit(parentmodel abc) 
    { 

    } 

所以我的問題是,當我發佈parentmodel被返回爲NULL數據,但是當我嘗試爲

[httppost] 
public ActionResult Submit(model1 abc) 
{ 
} 

我得到MODEL1表單值。我的方法是對的嗎?在父模型中獲取表單值應該做些什麼?

+1

你可以顯示返回初始視圖的動作嗎? –

+1

真的很難明白你想要的東西.. – sed

+0

如果你使用'@ Html.RenderPartial()',你將能夠通過一個模型(通常是你的主模型的一小部分)。使用'@ Html.Action()'在視圖中嵌入另一個動作結果,並不像使用部分一樣。 –

回答

0

很難說出你想從你的問題中想做什麼,但是如果我理解正確,你想要將表單值同時傳遞給三個單獨的部分?

如果是這樣的話,我建議您跳過表單回發,並在您點擊提交按鈕時只做三個ajax調用來加載部分。

+0

不,實際上我想從三個部分視圖(每個都有單獨的控制器和視圖,如上所示)中獲取表單值,但是我收到的值爲null。如何獲取父模型中的值? – user1199036

+0

每三個局部視圖都有自己的模型,如model1,model2和model3.And爲所有模型中的值我已經創建瞭如上所述的父模型,它包含在模型之上。但父值爲null。 – user1199036

+0

@ user1199036如果您只是希望在父視圖中使用部分視圖中的表單值,則可以通過javascript訪問它們,就像它們位於父頁面中一樣。 –

1

首先總是提到你的模型在頂部。

@model MyMVCModels

@Html.TextBoxFor(m => m.Model1.Name)

這裏是美女,模型1值都有,而你是在你的文本框或控件設置是適當的。

此外,您的模型的結構也可能不正確。

+0

Thanx爲你提供的幫助顯示的變化我糾正它在部分視圖和它的工作。能夠獲得父控制器中的值。 – user1199036

+0

太棒了。 您可以標記爲已回答。 –

+0

是否有任何其他方法在非順序模型綁定方面更好,因爲我有要求,父模型應該與部分視圖模型獨立。因此,在這種情況下,MymvcModels依賴於model1.It應該是獨立的 – user1199036