2017-03-13 42 views
0

我繼承了一個MVC網站,並被要求將兩個頁面合併爲一個。由於兩個視圖都有自己的視圖模型,我想不是將兩個虛擬機放在一起,而是使用局部視圖來顯示,在這種情況下,視圖中的時鐘組稱爲Clock_Detail。但是,我需要讓GroupId填充時鐘組的數據。將參數傳遞給MVC部分視圖時感到困惑?

因此,已經很少使用局部視圖我如何得到這個工作困惑。 我創建了一個新的查看名爲_ClockGroup.cshtml和抄襲和其他頁面粘貼一些基本的代碼只是爲了看看我是否能得到任何顯示。

在我ClockDetail控制器添加以下。

public PartialViewResult ClockGroup(int groupId) 
{ 
    ClockGroupViewModel vm = DAL.GetClockGroupDetail(groupId); 
    return PartialView(vm); 
} 

這裏是_ClockGroup.cshtml

@model site.Models.ViewModels.ClockGroupViewModel 

<div class="form-group"> 
    @Html.LabelFor(m => m.GroupId, htmlAttributes: new { @class = "control-label col-md-2" }) 
    @Html.EditorFor(m => m.GroupId, new { htmlAttributes = new { @class = "form-control", disabled = "disabled", @readonly = "readonly" } }) 
</div> 
<div class="form-group"> 
    @Html.LabelFor(m => m.GroupName, htmlAttributes: new { @class = "control-label col-md-2" }) 
    @Html.EditorFor(m => m.GroupName, new { htmlAttributes = new { @class = "form-control", autofocus = "autofocus" } }) 
    @Html.ValidationMessageFor(m => m.GroupName, "", new { @class = "text-danger" }) 
</div> 

這是從clock_detail.cshtml視圖。它使用以下模型,然後將「部分」添加到此視圖。

@model site.Models.ViewModels.ClockDetailViewModel 

@Html.Partial("_ClockGroup") 

當然我得到該模型通過一個字典類型「site.Models.ViewModels.ClockDetailViewModel」錯誤,但字典需要的時間「site.Models.ViewModels.ClockGroupViewModel"的典範項目。

我需要繼續前進,兩者的ViewModels結合在了一起,只使用單一的視圖模型?

+0

通過你在你的諧音編寫代碼的方式,你應該看看使用[模板代替](http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor- templates.html)。模板是有利的,因爲它們讀得更好,並且調用它們的約定使它們更容易診斷。我很少使用偏分量。 –

+0

我會看看模板。如果它有助於代碼的可維護性,我總是會嘗試一些東西。 – Caverman

回答

1

當你沒有指定一個對象作爲第二個參數:

@Html.Partial("_ClockGroup") 

它會自動將當前的模型,它的類型是ClockDetailViewModel

你的部分都需要鍵入ClockGroupViewModel

的解決將是當你調用部分在ClockDetailViewModel對象的ClockGroupViewModel屬性來傳遞:

@Html.Partial("_ClockGroup", Model.ClockGroupViewModelProperty) 

如果您的ClockDetailViewModel類沒有ClockGroupViewModel屬性,則需要將其添加到ViewModel並填充數據。

+0

我看過哪裏沒有通過模型會通過當前模型,並認爲這是問題的一部分。但是,我無法弄清楚如何將ClockGroupViewModel傳遞給partial。我的ClockDetailViewModel沒有ClockGroupViewModel屬性。我想我需要看看我需要做些什麼才能完成。謝謝... – Caverman

+0

我覺得它在數據庫訪問上是雙重傾斜的,但至少看起來這樣可以工作,而不必重新編寫一堆代碼。 – Caverman

+0

...我以爲我們在這裏討論視圖模型?視圖模型只是視圖依賴的數據的容器。您的視圖模型應該很少是數據庫模型的1到1表示形式。 – maccettura