我有類如下的類。這是許多類以相同的一些屬性,如CreatedBy和ModifiedBy:如何在視圖之間共享包含Html.TextVoxFor的樣板代碼?
public class Test1 {
[DisplayName("Created By")]
public string CreatedBy { get; set; }
[DisplayName("Modified By")]
public string ModifiedBy { get; set; }
}
public class Test2 {
[DisplayName("Created By")]
public string CreatedBy { get; set; }
[DisplayName("Modified By")]
public string ModifiedBy { get; set; }
}
我想有一個代碼塊,我在這些類不同的看法重用。代碼塊應該已經格式化的數據,如:
<div class="a">
@Html.LabelFor(model => model.Note.CreatedBy)
@Html.TextBoxFor(model => model.Note.CreatedBy)
</div>
<div class="b">
@Html.LabelFor(model => model.Note.ModifiedBy)
@Html.TextBoxFor(model => model.Note.ModifiedBy)
</div>
我看着這樣做的,最初的幾個不同的方法是使用一個類來保存所有修改和創建的數據。我的解決方案是基於這樣的:
不過現在我已經被告知我不能使用一個類,在這個解決方案,其中數據在一個類中RowInfo持有使用。我必須直接使用上面顯示的類Test1和Test2中的字段。
任何人都可以建議我如何安排HTML代碼被多個類重用。我知道我可以使用幾種不同的方法,但我所知道的所有方面似乎都不允許我在共享相同字段的多個類之間共享代碼。
我希望這是有道理的。如果不告訴我,我會解釋更多。
我有點困惑。我的類Test1和Test2是數據類,並繼承如下:「公共類Test1:TableServiceEntity」你的意思是稱它爲「BaseViewModel」?他們也可以來自不止一個班級嗎? –
@SamanthaJ,ASP.NET MVC中的規則1(以及對我來說最重要的規則):你從不**將數據/域類傳遞給你的視圖。你總是定義和使用視圖模型。視圖模型是專門爲視圖的需求定義的類。所以如果你說Test1和Test2是從某個TableServiceEntity派生出來的,那麼這些類永遠不會到達你的視圖。他們可以被你的控制器操作操縱,但是這個動作應該將它們映射到你定義的相應的視圖模型。然後將這個視圖模型傳遞給視圖。 –
是的,我正在使用viewModels。類Test1和Test2都有自己的viewModels,然後有很多字段的視圖。就在每個視圖的底部,我想把這個共享塊。如果我使用編輯器模板,那麼我可以使用這個特定的字段塊嗎?希望它是有道理的。 –