0
我想創建一個更「高級」的編輯對我的MVC Web應用程序模板,但我有困難的一點點。在我解釋之前,讓我顯示我的源代碼。多模型訪問
這是在我看來代碼(使用模板):
@Html.EditorFor(model => model.Height, "UnitTemplate", new { unitModel = Model.HeightUnit, unitType = Units.Distance })
這裏是模板:
@{
Layout = null;
}
@using MyProject.Models;
@{
var unitModel = this.ViewData["unitModel"];
var unitType = this.ViewData["unitType"] as SelectList;
}
<div class="data-group">
<div class="editor-label">
@Html.LabelFor(model => model)
</div>
<div class="option1">
@Html.TextBoxFor(model => model)
</div>
<div class="units">@Html.DropDownListFor(model => unitModel, unitType, new { @class = "unit" })</div>
<div class="validation">
<div>@Html.ValidationMessageFor(model => model)</div>
</div>
</div>
正如你所看到的,我有一定的價值(在這種情況下,高度),我也有一個與該值相關聯的單位類型(HeightUnit)。我希望能夠通過一般與模型相關聯(因爲我使用在相當多的地方這個模板)的單位價值,以及以及單元的類型(因爲這也可以更改)。最終,目標是讓用戶在值之間快速轉換。
幸運的是,一切都運行到這一點(轉換,人口等),不同的是,當我保存的效果,unitModel不會保存到數據庫中。有人有什麼建議,我可以做些什麼來實現這個目標?
我的確想到了這一點,但問題在於,單位變量的名稱與單位類型不同。我計劃在整個我的網站中使用這個模板,而不僅僅是一個或兩個值。 – JasCav 2011-05-05 15:29:46
@JasCav,如果您具有約束力的下拉列表的變量不同,您將需要重新適應你的POST操作接收以選定值正確綁定視圖模型。查看HTML源代碼中已生成的名稱屬性,並且您應該在POST操作中使用相同的名稱來獲取該值。 – 2011-05-05 15:38:40
好的,這是有道理的。我沒看名字,看到這一切被命名爲「[MODELNAME] .unitType」 - 在這個例子中這樣Height.unitType。我不確定我是否理解如何在控制器中綁定這個。如果你可以提供一個例子,它將不勝感激。 +1在此期間。 – JasCav 2011-05-05 16:07:38