如果這是MVC3的問題,那麼會有關於此的帖子,但我找不到任何內容。我一定做錯了什麼。我有一個簡單的視圖(Index.cshtml),它使用for循環遍歷列表。在每次迭代中,我輸出兩個文本輸入,其中一個列表項中的值。MVC3 - 使用編輯器的問題
@{Html.BeginForm();}
@Html.Encode("\n")
@for (int i = 0; i < Model.SortOptions.Count; i++)
{
@Html.TextBoxFor(m => m.SortOptions[i].ColumnName);
@Html.Encode("\n");
@Html.TextBoxFor(m => m.SortOptions[i].Direction);
@Html.Encode("\n");
}
<input type="submit" value="Submit" />
@{Html.EndForm();}
我有兩個控制器的視圖,一個用於GET請求,一個用於POST。 POST版本將不同的項目添加到列表中的GET版本。這是問題出現的地方。頁面重新加載後,文本框與GET頁面上加載的頁面具有相同的值。
起初我以爲它一定是緩存問題,但如果我修改代碼(如下所示),手動添加文本輸入並將值注入到html中,則新值將發送到瀏覽器。
@{Html.BeginForm();}
@Html.Encode("\n")
@for (int i = 0; i < Model.SortOptions.Count; i++)
{
var columnNameName = string.Format("SortOptions[{0}].ColumnName", i);
var columnNameID = string.Format("SortOptions_{0}__ColumnName", i);
var directionName = string.Format("SortOptions[{0}].Direction", i);
var directionID = string.Format("SortOptions_{0}__Direction", i);
<input type="hidden" name="@columnNameName" id="@columnNameID" value="@Model.SortOptions[i].ColumnName" />
<input type="hidden" name="@directionName" id="@directionID" value="@Model.SortOptions[i].Direction" />
}
<input type="submit" value="Submit" />
@{Html.EndForm();}
我已經通過代碼來確保模型在發送到視圖時包含期望值。我甚至通過查看視圖中的代碼來檢查列表的值。它似乎有正確的值,但是當我在瀏覽器中查看它時,它具有應該與頁面響應GET請求時相對應的值。這是編輯器模板的問題嗎?我剛開始使用mvc3和剃鬚刀引擎,所以有很多我不知道。任何幫助,將不勝感激。
-----更新:新增控制器代碼----
[HttpGet]
public ActionResult Index()
{
var inv = new InventoryEntities();
var model = new IndexModel(inv);
model.SortOptions = new List<SortOption>();
model.SortOptions.Add(new SortOption { ColumnName = "Model", Direction = SortDirection.Ascending });
model.SortOptions.Add(new SortOption { ColumnName = "Make", Direction = SortDirection.Ascending });
//Load data
model.LoadEquipmentList();
return View(model);
}
[HttpPost]
[OutputCache(Duration = 1)]
public ActionResult Index(List<SortOption> sortOptions, SortOption sort)
{
var inv = new InventoryEntities();
var model = new IndexModel(inv);
ModelState.Remove("SortOptions");
model.SortOptions = new List<SortOption>();
model.SortOptions.Add(new SortOption { ColumnName = "Type", Direction = SortDirection.Descending });
model.SortOptions.Add(new SortOption { ColumnName = "SubType", Direction = SortDirection.Descending });
model.EquipmentList = new List<EquipmentListItem>();
model.EquipmentList.Add(new EquipmentListItem { ID = 3, AssignedTo = "Mike", Location = "Home", Make = "Ford", Model = "Pinto", Selected = false, SubType = "Car", Type = "Vehicle" });
return View(model);
}
你能發佈控制器操作代碼嗎? – sarvesh 2011-04-09 00:30:06
現在發佈控制器代碼。 – m9k5j 2011-04-11 18:47:23