Tag: 模型绑定

MVC3 – HiddenFor字典值

我有一个名为Week的字典属性: public IDictionary Week { get; private set; } 而我正试图将其值传递给HiddenFor (Days) @Html.HiddenFor(x => x.Week.Values) 它必须是Model的属性,所以我不能做x.Week.Values.ToList(); 我如何将字典值传递给Html.HiddenFor ?

MVC Web API绑定模型到派生类

我正在研究如何将模型绑定到MVC Web API中的派生类,我的问题是我认为我已经找到了5种方法… 我所拥有的是: 型号 – > 模型库 ModelA:ModelBase ModelB:ModelBase 控制器然后容器方法: Post(ModelBase model) {} 发布的数据将是ModelA或ModelB,我想向HTTP Request元数据添加信息(想想Content-Type:application / json; type = ModelA)并基于此告诉MVC将发布的内容绑定到A或B. 在代码中,我想象的是: Bind(request, bindingContext) { // check request headers and then… bindingContext.ModelType=typeof(ModelA); // let the framework continue doing its thing deserializing the content base.Bind(request, bindingContext); } 其他人怎么做到这一点? 或者你会如何推荐这样做? 我见过ParameterBinding,IModelBinder,MediaTypeFormatter等.MVC很棒,但有时很难想到你应该使用哪个钩子…… 编辑: 要添加更多信息,ModelBase很可能成为一个接口,并且将有数百个具体类。 它将用于CQRS:Command,然后是ConcreteCommandA,ConcreteCommandB,这些将被推送到调度程序,我不想为每个命令做一个动作,一个接收这些命令的中心动作,将它们反序列化为正确的类型并转发它们。

Web API操作参数间歇性为null

相关问题: Web API ApiController PUT和POST方法间歇性地接收空参数 背景 在对现有Web API项目进行负载测试时,由于参数在发布到操作时为null,因此我注意到很多空引用exception。 原因似乎是在dev环境中运行时为日志请求注册的自定义消息处理程序。 删除此处理程序可解决此问题。 我知道在Web API中我只能读取一次请求体,并且读取它会始终导致我的参数为null,因为模型绑定将无法进行。 出于这个原因,我正在使用带有ContinueWith的ReadAsStringAsync()方法来读取正文。 看起来这在~0.2%的请求中表现奇怪(在使用Apache Bench进行本地调试期间)。 码 在最基本的层面上,我有以下几点: 模型 public class User { public string Name { get; set; } } API控制器 public class UsersController : ApiController { [HttpPost] public void Foo(User user) { if (user == null) { throw new NullReferenceException(); } } } 消息处理程序 […]

如何在模型创建期间覆盖ASP.NET MVC 3默认模型绑定器以解析依赖关系(使用ninject)?

我有一个ASP.NET MVC 3应用程序,它使用Ninject来解决依赖关系。 到目前为止,我所要做的就是使Global文件inheritance自NinjectHttpApplication ,然后重写CreateKernel方法以映射我的依赖项绑定。 之后,我能够在我的MVC控制器构造函数中包含接口依赖项,并且ninject能够解析它们。 一切都很棒。 现在我想在模型绑定器中解决依赖关系,当它创建我的模型的实例时,但我不知道如何做到这一点。 我有一个视图模型: public class CustomViewModel { public CustomViewModel(IMyRepository myRepository) { this.MyRepository = myRepository; } public IMyRepository MyRepository { get; set; } public string SomeOtherProperty { get; set; } } 然后我有一个接受视图模型对象的action方法: [HttpPost] public ActionResult MyAction(CustomViewModel customViewModel) { // Would like to have dependency resolved view model object here. } […]

将查询参数绑定到ASP.NET Core中的模型

我试图使用从查询参数到对象的模型绑定进行搜索。 我的搜索对象是 [DataContract] public class Criteria { [DataMember(Name = “first_name”)] public string FirstName { get; set; } } 我的控制器有以下操作 [Route(“users”)] public class UserController : Controller { [HttpGet(“search”)] public IActionResult Search([FromQuery] Criteria criteria) { … } } 当我按如下方式调用端点时…/users/search?first_name=dave控制器操作上的criteria属性为null。 但是,我可以将端点称为蛇案例…/users/search?firstName=dave并且criteria属性包含属性值。 在这种情况下,模型绑定已经起作用,但是当我使用snake_case时却没有。 如何在模型绑定中使用snake_case?

什么是ASP.NET MVC中的WebApi 等价物?

在WebApi中,我可以使用[FromUri]在控制器动作上装饰一个参数,以便将URI的组件’反序列化’(如果愿意的话)放入POCO模型中; 又称模型绑定。 尽管从2.0开始使用MVC,我从未将它用于网站(不知道为什么)。 ASP.NET MVC 5中它的等价物是什么? 除非我需要引用库,否则IDE中似乎无法识别该属性。 我想~/thing/2014/9绑定到下面的模型: public class WhateverModel { public int Year { get; set; } public int Month { get; set; } } 谢谢 更新 在另一个问题(上面的链接)中,OP说: 但是,将其切换为普通MVC而不是WebApi,并且默认模型绑定器会崩溃,并且无法绑定嵌套数组中对象的属性 这意味着他正在使用WebApi中的属性。 我猜。 我没有那些引用,因为我在MVC中,所以(ab)使用WebApi的版本是否可以在MVC中执行此操作? 更新2 在这个问题的答案是: 您需要构建关于MVC模型绑定器命名约定的查询字符串。 此外,示例操作中的[FromUri]属性被完全忽略,因为MVC DefaultModelBinder不知道它 因此,如果他在错误的属性上取得了一些成功,那么我仍然不知道OP在该问题上甚至在谈论什么做什么或地球上有什么。 我想我希望得到一个明确的答案,而不是其他问题的泥泞。

多态自定义模型绑定器没有填充模型w /值

我有一个自定义模型绑定器,我用它来返回基于包含原始类型的隐藏值的相应模型子类型。 例如,在我的视图(EditorTemplate)中,我有: @model MyWebApp.Models.TruckModel @Html.Hidden(“ModelType”, Model.GetType()) @Html.EditorFor(m => m.CabSize) 然后,在我的自定义模型绑定器中,我有: protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType) { var typeValue = bindingContext.ValueProvider .GetValue(bindingContext.ModelName + “.ModelType”); var type = Type.GetType((string)typeValue.ConvertTo(typeof(string)), true); var model = Activator.CreateInstance(type); bindingContext.ModelMetadata = ModelMetadataProviders.Current .GetMetadataForType(() => model, type); return model; } typeValue和type变量被设置为适当的值(类型为TruckModel ),但在执行GetMetadataForType , model仍然填充了null / default值。 我检查了几个post( 这里和这里列出一对夫妇),看起来我正在做这里所解释的一切,但它仍然不适合我。 您可以参考我之前关于此主题的post […]

ASP.NET MVC 3自定义操作filter – 如何将传入模型添加到TempData?

我正在尝试构建一个自定义动作filter,它将传入的模型从filter上下文中删除,将其添加到tempdata,然后执行“其他内容”。 我的动作方法如下所示: [HttpPost] [MyCustomAttribute] public ActionResult Create(MyViewModel model) { // snip for brevity… } 现在,我希望在模型绑定启动后将模型添加到TempData ,并将表单值集合转换为MyViewModel 。 我怎么做? public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!filterContext.Controller.ViewData.ModelState.IsValid) return; var model = filterContext.????; // how do i get the model-bounded object? filterContext.TempData.Add(someKey, model); }

MVC3模型使用自定义EditorTemplate和Partial View将pagedlist绑定到ViewModel

我试图生成一个包含在部分视图中的分页结果表。 它使用ajax调用动态刷新。 我在很多页面上重现了它,但是在特定的页面上,我需要绑定表行的值并使用ViewModel返回。 为了实现这一点,我尝试使用EditorTemplate来为PagedList集合使用自定义对象。 问题在于PartialView上显示的editortemplate没有为主ViewModel上的PagedList集合正确命名。 如果我用代码解释它可能更容易。 主要观点如下: @model RequestCreateViewModel @Html.Partial(“_PagedCreateRequest”) @Html.HiddenFor(x => x.PageSize) @Html.HiddenFor(x => x.PageNumber) 因此,部分是: @model IPagedList @Html.EditorFor(x => Model) @Ajax.ImageActionLink( “../../Content/images/first.gif”, “alt text”, “PageResults”, new { Page = 1, area = “Admin”, SortBy = Model.SortBy, SortDescending = Model.SortDescending, PageSize = Model.PageSize }, new { style = “margin-top: 2px;” }, new { @readonly […]

DataContract模型绑定到ASP.NET MVC操作方法参数中的JSON

MVC3开箱即用JsonValueProviderFactory(),它非常方便将传入的JSON绑定到模型。 不幸的是,我无法弄清楚如何设置名称与传入JSON不同的模型合同。 例如: [DataContract(Name = “session”)] public class FacebookSession { [DataMember(Name = “access_token”)] public string AccessToken { get; set; } [DataMember(Name = “expires”)] public int? Expires { get; set; } [DataMember(Name = “secret”)] public string Secret { get; set; } [DataMember(Name = “session_key”)] public string Sessionkey { get; set; } [DataMember(Name = “sig”)] public string […]