我正在寻找使用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编辑器模板javascript位置
- 2. ASP.Net MVC 2编辑器模板
- 3. ASP.NET MVC 2编辑器模板
- 4. ASP.NET MVC 3 - 部分vs显示模板与编辑器模板
- 5. Asp.net MVC不显示模板编辑
- 6. asp.net mvc编辑自动模板TT
- 7. ASP.NET MVC编辑模板/ UIHint与
- 8. ASP.NET MVC Html.Editor通过模型编辑器模板
- 9. MVC模板助手 - DropDown
- 10. ASP.NET MVC内置支持DropDownList编辑器模板
- 11. 在asp.net mvc 2编辑器模板中使用jquery
- 12. 在asp.net中级联编辑器模板的最佳方法mvc
- 13. 是否有ASP.NET MVC 2编辑器模板库?
- 14. asp.net的MVC:使用模板编辑器更新对象,
- 15. ASP.NET MVC 4 Beta编辑器模板是否对CSRF安全?
- 16. Asp.Net mvc 2,DropDownListFor和编辑器模板。选定的值不d123
- 17. 用于值类型的ASP.NET MVC 2编辑器模板,int
- 18. 如何验证ASP.NET MVC编辑器模板中的结果?
- 19. 文本编辑器 - Asp.net mvc
- 20. Froala WYSIWYG编辑器 - Asp.net MVC
- 21. asp.net gridview的编辑模板编程
- 22. Mygeneration模板编辑器
- 23. 模板编辑器脚本
- 24. Html编辑器模板
- 25. ASP.NET MVC Dropdown Selected Item
- 26. ASP.Net MVC简单编辑默认模板中的数据
- 27. ASP.NET MVC - 嵌套编辑模板不工作
- 28. ID的MVC3编辑器模板像SSN
- 29. mvc razor中的嵌套编辑模板
- 30. MVC编辑模板,结果被缓存
感谢这个,这似乎是我想要的东西。 – Craig 2010-10-25 21:01:21
谢谢Darin。但编辑器模板只有一个taks(显示下拉菜单)。你怎么能简单地调用EditotFormModel()?如果我需要两个编辑器模板呢?一个用于下拉菜单,一个用于复选框列表?两个我想使用int他相同的看法? – Shyju 2012-01-08 18:43:09