有谁知道我在哪里可以找到构建自定义模型绑定器的教程.
我发现使用默认模型绑定器和EntitySets的几个问题(在创建新对象时没有填充并在编辑对象上创建重复项)并且发现我的UI与我的模型完全不匹配(例如时间字段格式化为"hh:mm am"与时间跨度不匹配).因此,我想看看创建自定义模型绑定器是否是更好的解决方案.我找到了几个例子:这里和这里.第一个是我认为已经过时了,第二个并没有真正解释发生了什么.
我的主要问题是我不完全理解BindModel方法的ControllerContext和ModelBindingContext究竟是什么,即它们与控制器和模型的关系.
如果有人指点我的教程或者看看dave hayden的帖子并告诉我它如何看待当前MVC的实现,我将不胜感激.
我想设置一个ASP.NET MVC路由,如下所示:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{idl}", // URL with parameters
new { controller = "Home", action = "Index", idl = UrlParameter.Optional } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)
路由请求看起来像这样......
Example/GetItems/1,2,3
Run Code Online (Sandbox Code Playgroud)
...到我的控制器动作:
public class ExampleController : Controller
{
public ActionResult GetItems(List<int> id_list)
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我如何设置将idlurl参数从stringinto转换为List<int>并调用适当的控制器操作?
我在这里看到了一个相关的问题,用于OnActionExecuting预处理字符串,但没有改变类型.我不认为这对我有用,因为当我OnActionExecuting在我的控制器中覆盖并检查ActionExecutingContext参数时,我看到ActionParameters字典已经有idl一个空值的键 - 大概是从字符串尝试转换为List<int>...这个是我想要控制的路由的一部分.
这可能吗?