我正在尋找使用MVC創建下拉列表編輯器模板的最佳方法。似乎有各種方法,但我找不到任何最好的方法,每個人似乎都以不同的方式做。我使用Razor也使用MVC3,因此一個適用於此的方法是首選。ASP.NET MVC DropDown編輯器模板
回答
有很多方式和說法這是最好的將是主觀的,在你的情況下它的方式,你忘了你的問題描述可能無法正常工作。下面是我如何做到這一點:
型號:
public class MyViewModel
{
public string SelectedItem { get; set; }
public IEnumerable<Item> Items { get; set; }
}
public class Item
{
public string Value { get; set; }
public string Text { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
// TODO: Fetch this from a repository
Items = new[]
{
new Item { Value = "1", Text = "item 1" },
new Item { Value = "2", Text = "item 2" },
new Item { Value = "3", Text = "item 3" },
}
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
if (!ModelState.IsValid)
{
// redisplay the view to fix validation errors
return View(model);
}
// TODO: The model is valid here =>
// perform some action using the model.SelectedItem
// and redirect to a success page informing the user
// that everything went fine
return RedirectToAction("Success");
}
}
視圖(~/Views/Home/Index.cshtml
):
@model MyApp.Models.MyViewModel
@{ Html.BeginForm(); }
@Html.EditorForModel()
<input type="submit" value="OK" />
@{ Html.EndForm(); }
編輯模板(~/Views/Home/EditorTemplates/MyViewModel.cshtml
):
@model MyApp.Models.MyViewModel
@Html.DropDownListFor(x => x.SelectedItem,
new SelectList(Model.Items, "Value", "Text"))
我個人認爲列表項應放置在視圖中的數據不是視圖模型,但它實際上取決於如果你是顯示下拉永遠不會改變(使用視圖的數據),或者如果你要動態地修改(使用視圖模型)。
在這個例子中你張貼了同樣的看法模型索引操作。索引操作僅對所選項目感興趣,因此可以將索引後操作的參數更改爲字符串selectedItem。這樣,模型聯編程序將查看錶單參數併爲您填充索引參數。
而且,我認爲這將是更好的傳遞SelectedListItems名單下來認爲,這樣你就不需要任何轉換與不需要的項目類。
我喜歡這個解決方案,但它可以DI'd了多一點,就像使用'DependencyResolver',而不是'Activator'實例 – 2012-12-10 20:43:05
其實我做了很多改進,但我覺得懶得更新文章:)也許我會做一個新的,然後我告訴你:) – 2012-12-10 22:29:14
- 1. ASP.NET MVC編輯器模板
- 2. 屬性的ASP.NET MVC編輯器模板
- 3. ASP.NET MVC編輯器模板javascript位置
- 4. ASP.NET MVC模板編輯器不工作
- 5. ASP.NET MVC 2編輯器模板
- 6. ASP.Net MVC 2編輯器模板
- 7. ASP.NET MVC 3 - 部分vs顯示模板與編輯器模板
- 8. ASP.NET vNext。一般編輯器模板
- 9. Asp.net MVC不顯示模板編輯
- 10. asp.net mvc編輯自動模板TT
- 11. ASP.NET MVC編輯模板/ UIHint與
- 12. ASP.NET MVC Html.Editor通過模型編輯器模板
- 13. ASP.NET MVC編輯器模板;參數傳遞到控制器
- 14. MVC模板編輯器和帖子
- 15. MVC模板助手 - DropDown
- 16. MVC剃刀編輯器模板ContentEditable DIV
- 17. ASP.NET MVC 4 Beta編輯器模板是否對CSRF安全?
- 18. 在asp.net mvc 2編輯器模板中使用jquery
- 19. 在asp.net中級聯編輯器模板的最佳方法mvc
- 20. 用於值類型的ASP.NET MVC 2編輯器模板,int
- 21. 是否有ASP.NET MVC 2編輯器模板庫?
- 22. ASP.NET MVC內置支持DropDownList編輯器模板
- 23. ASP.NET MVC編輯器模板;顯示列的位置
- 24. asp.net中編輯器模板中的遠程屬性mvc
- 25. ASP.NET MVC動態綁定編輯器模板
- 26. ASP.NET MVC編輯器模板名稱爲空字符串
- 27. asp.net的MVC:使用模板編輯器更新對象,
- 28. ASP.NET MVC 4編輯器模板和jQuery Datepicker
- 29. 如何驗證ASP.NET MVC編輯器模板中的結果?
- 30. 基於下拉值的Asp.NET MVC 2動態編輯器模板
感謝這個,這似乎是我想要的東西。 – Craig 2010-10-25 21:01:21
謝謝Darin。但編輯器模板只有一個taks(顯示下拉菜單)。你怎麼能簡單地調用EditotFormModel()?如果我需要兩個編輯器模板呢?一個用於下拉菜單,一個用於複選框列表?兩個我想使用int他相同的看法? – Shyju 2012-01-08 18:43:09