2011-04-19 56 views
0

我的指數看起來是這個頁面模型,接受對象的列表mvc3剃鬚刀索引頁面,帶有兩個帶有diff的部分頁面。頁面模型

@model List<MyProject.Domain.Object> 

@Html.Partial("PickDatePartial") 
@Html.Partial("ObjectPartial", Model) 

我的問題是這樣的第一部分頁面中,導致該部分頁面接受就不一一列舉,但單@model MyProject.Domain.Object

我怎樣才能找到這個,在這種情況下,索引頁面不能被渲染,因爲它期望接收對象列表。

預先感謝您。

回答

2

嗯,一個你可以快速和骯髒的東西是第一個對象傳遞給PickDatePartial

@Html.Partial("PickDatePartial", Model.First()) 

但是,這是不是很乾淨。我建議創建具有兩個屬性:1)整個列表,2)一個由PickDatePartial綁定視圖模型:

public class IndexViewModel 
{ 
    public List<MyProject.Domain.Object> MyList { get; set; } 
    public MyProject.Domain.Object ObjectToBind { get; set; } 
} 

然後在你的Index動作控制器上:

public ActionResult Index() 
{ 
    var myList = // instantiate list here 
    var viewModel = new IndexViewModel 
    { 
     MyList = myList, 
     ObjectToBind = myList.First() // or whichever you need out of that list 
    } 

    return View(viewModel); 
} 

當然,您需要在Index視圖中更改模型的類型。現在Index視圖看起來像這樣:

@model IndexViewModel 

@Html.Partial("PickDatePartial", Model.ObjectToBind) 
@Html.Partial("ObjectPartial", Model.MyList) 
+0

另一種選擇是將ObjectToBind更改爲int選擇指數,並通過@ Html.Partial( 「PickDatePartial」 Model.List [Model.Selection]) – 2011-04-19 21:39:23

1

如果「PickDatePartial」需要一個對象,並且給它一個對象列表,它應該使用哪個對象?

這取決於你決定做什麼。

你可以告訴它使用的第一個對象:

@if (Model.Count > 0) { 
    @Html.Partial("PickDatePartial", Model[0]) 
} 

,或者你可以叫它爲每個對象:

@foreach(var item in Model) { 
    @Html.Partial("PickDatePartial", item) 

} 

可能性是無窮無盡的。

+0

謝謝你的回答,但那不是我所需要的。也許我的問題是錯誤的:) 這裏是具體的場景 我有索引頁接受對象列表作爲模型。 在同一頁面上,我有兩個部分文件,一個用於在索引頁面頂部顯示pickdate(一個實例),另一個用於基於選定日期渲染對象列表。 因此,第二部分很好,它接收對象的列表,因爲它在頁面模型聲明中需要,但在挑選日期部分,我必須使用一個對象實例綁定日期模型上的字段。 – BobRock 2011-04-19 12:57:07

+0

要完成 Index文件 @model列表 .. @ Html.Partial( 「PickDatePartial」,??) @ Html.Partial( 「ObjectPartial」,模型) --- PickDatePartial文件 @model MyProject.Domain.Object ... .Bind(Model.SelectedDate).GetHtml() – BobRock 2011-04-19 13:04:38

相關問題