2014-07-09 83 views
0

的一部分,我不知道如何尋找這是我不知道它會被稱爲MVC,查看語法,變量模型

我有像這樣

class MyModel 
{ 
    public Firstbit {get; set; } 
    public Secondbit {get; set; } 
} 
模型

在我看來,我有這樣的事情

<div> 
    @Html.TextBoxFor(x => x.Firstbit.A) 
    @Html.TextBoxFor(x => x.Firstbit.B) 
    @Html.TextBoxFor(x => x.Firstbit.C) 
</div> 
<div> 
    @Html.TextBoxFor(x => x.Secondbit.A) 
    @Html.TextBoxFor(x => x.Secondbit.B) 
    @Html.TextBoxFor(x => x.Secondbit.C) 
</div> 

除了利用諧音或分割文件了,我可以有一個局部變量保存FirstBit/secondbit每次寫什麼?即

<div> 
    @{ var a = @Model.Firstbit; } 
    // somehow address 'a' below? 
    @Html.TextBoxFor(x => x.A) 
    @Html.TextBoxFor(x => x.B) 
    @Html.TextBoxFor(x => x.C) 
</div> 

感謝

回答

4

大概不會。你甚至不想這樣做。

對於初學者,任何時候你必須在你的視圖中聲明一個變量,你可能做錯了什麼。視圖應該真正地綁定到他們的支持模型,最多隻能使用一些條件或循環邏輯。

退一步,問......這真的會實現什麼?您可以節省幾個按鍵,但是會讓代碼變得不那麼標準,也更難以遵循。擊鍵並不是困難的部分。在IDE中鍵入代碼並不是困難的部分。以後支持這些代碼(或者在別人的支持下,或者在你寫下它並忘記它之後的一段時間內支持)是困難的部分。

保持代碼簡單,易於閱讀,易於理解,並清楚表達其所做的事情。此代碼告訴你究竟它在做什麼:

@Html.TextBoxFor(x => x.Secondbit.C) 

它創建一個文本框模型的Secondbit屬性的C財產。現在

,如果模型已經開始有太多的性質和看法開始變得過大,有一件事你可以(並視情況或許應該)做的是掰開你的看法變成多個部分視圖,每個部分視圖都處理大型組合模型中的特定模型。

例如,您可以創建一個局部視圖,該視圖專門爲查看和/或編輯Firstbit類型的模型而構建標記。然後在你的父視圖你會認爲模型實例委託給局部視圖:

@Html.Partial("FirstbitView", Model.Firstbit) 

畢竟,由於模型是小模型的複合,這是有道理的看法是小意見的複合。這將代碼組織成分立的組件,而不是單個組件上的某種簡寫符號。

+0

K,謝謝,那就是我所懷疑的。我不喜歡代碼重複,但是過去某個時候我會使用部分代碼 – tony

0

您可以爲此創建部分視圖或顯示模板。 爲避免代碼重複,您可以定義一個將其用作模型的接口。

以下是使用局部視圖的示例。首先,我們定義和實現的位I接口

public class MyModel 
{ 
    public Firstbit Firstbit { get; set; } 
    public Secondbit Secondbit { get; set; } 
} 

public interface Ibit 
{ 
    string A { get; set; } 
    string B { get; set; } 
    string C { get; set; } 
} 
public class Firstbit : Ibit  
{ 
    public string A { get; set; } 
    public string B { get; set; } 
    public string C { get; set; } 
} 

public class Secondbit : Ibit  
{ 
    public string A { get; set; } 
    public string B { get; set; } 
    public string C { get; set; } 
} 

然後我們使用這個接口作爲局部視圖內的模型(前IBitPartial.cshtml):

@model WebApplicationMVC.Model.Ibit 

    <div> 
     @Html.TextBoxFor(model => model.A) 

     @Html.TextBoxFor(model => model.B) 

     @Html.TextBoxFor(model => model.C) 

    </div> 

我們可以從主視圖中使用它:

@model WebApplicationMVC.Model.MyModel 

<div> 
    @Html.Partial("IBitPartial", Model.Firstbit) 

    @Html.Partial("IBitPartial", Model.Secondbit) 
</div> 
<h2>IBitMain</h2>