我想知道一些形式和部分形式的變化。提交在父頁面上,我已經改變了我傳遞給部分視圖的內容。我有一個相關的HomeViewModel父視圖(其中有公共屬性名稱和公衆人物員工{獲取;集;}MVC 3部分視圖和我需要發送給它的內容?
1)方案1:主要看有類似下面的
@model MasterDetailSample.Models.HomeViewModel
@using (Html.BeginForm()) {
<div>
@{Html.RenderPartial("_PersonView", @Model);}
</div>
<input type="submit" value="Save" />
}
在這種情況下,我傳遞給部分視圖_PersonView整個HomeViewModel。在_PersonView局部視圖中,我必須通過@ model.Employee.Name引用HomeViewModel即Person對象的屬性(在這種情況下,提交在父窗體上(不在局部視圖中))
當我點擊提交在控制器的表單(POST),我必須通過以下模型訪問員工「姓名」的屬性。員工姓名
這似乎工作,但請注意以下變化方案2(其中我只傳遞給部分Employee對象)
2.)場景2 在這種情況下,我只想將Employee對象發送到局部視圖。開始表格和提交表格同樣在父表格上。
所以從母體形式我有
@{Html.RenderPartial("_MasterView", @Model.Employee);}
,所以我通過@ Employee.Name引用Person對象的名稱屬性現在局部視圖內,當我提交控制器Employee對象內的形式不在自動模型活頁夾中可用。我可以從模型參數
即
[HttpPost]
public ActionResult Index(ModelViewModel model) {
**//model.Employee is null!**
return View();
}
爲什麼通過的FormCollection訪問屬性,但不是? (是model.Employee null)我希望我的部分視圖只接受Person類型的對象,但是在從父頁面提交後,Employee屬性爲null。在局部視圖我使用的@model線以下
@model MasterDetailSample.Models.Person
我想偏只需要一個Person對象被髮送到它,但我想提交的主要形式。如果我這樣做,我可以在幾種情況下重新使用局部視圖,但是如果我必須發送HomeViewModel,我顯然限制了我可以如何使用這個局部視圖。所以,我只想使用Person作爲具有局部視圖的模型,但我需要能夠從父視圖提交時訪問屬性。
可以這樣做嗎?如果是的話如何?
THX