Tag: 模型绑定

MVC4将模型绑定到ICollection或List in partial

给定一个模型 public class Task { public int TaskId { get; set; } public string Title { get; set; } public ICollection Information { get; set; } } 哪里 public class SomeData { public int SomeDataId { get; set; } public string Description { get; set; } } 我有一个观点 @model myProject.Models.Task @Html.LabelFor(model => model.Title) @Html.Partial(“_InformationEdit”, Model.Information.ToList(), […]

复选框和模型绑定的动态列表

我正在尝试创建一个视图,其中包含从数据库动态创建的复选框列表,然后在回发表单时检索所选复选框的列表。 我的EF模型包含一个类: public class ItemIWouldLikeACheckboxFor { public int Id { get; set; } public string Description { get; set; } } 我有一个包含以下列表的视图模型: public class PageViewModel { // various other properties public List checkboxList { get; set; } } 我的控制器获取方法: public ActionResult Create() { var viewModel = new PageViewModel(); viewModel.checkboxList = db.ItemIWouldLikeACheckboxFors.ToList(); return View(viewModel); } 我的看法: […]

模型绑定是否通过asp.net mvc中的查询字符串工作

模型绑定也可以通过查询字符串工作吗? 如果我有一个获取请求,例如: GET /Country/CheckName?Country.Name=abc&Country.Id=0 HTTP/1.1 CountryController中的以下方法是否具有包含Id和Name属性的oCountry参数以及查询字符串中的值? public ViewResult CheckCountryName(Country oCountry) { //some code return View(oCountry); } 出于某种原因,我在OCountry对象中将Id作为0并将Name作为null。 缺什么 ?

更改参数名称Web Api模型绑定

我正在使用Web API模型绑定来解析URL中的查询参数。 例如,这是一个模型类: public class QueryParameters { [Required] public string Cap { get; set; } [Required] public string Id { get; set; } } 当我调用/api/values/5?cap=somecap&id=1类的东西时这很好用/api/values/5?cap=somecap&id=1 。 有什么方法可以在模型类中更改属性的名称,但保持查询参数名称相同 – 例如: public class QueryParameters { [Required] public string Capability { get; set; } [Required] public string Id { get; set; } } 我认为将[Display(Name=”cap”)]到Capability属性会起作用,但事实并非如此。 我应该使用某种类型的数据注释吗? 控制器将有一个如下所示的方法: public IHttpActionResult […]

自定义模型Binderinheritance自DefaultModelBinder

我正在尝试为MVC 4构建一个自定义模型绑定器,它将inheritance自DefaultModelBinder 。 我希望它拦截任何绑定级别的任何接口,并尝试从名为AssemblyQualifiedName的隐藏字段加载所需的类型。 这是我到目前为止(简化): public class MyWebApplication : System.Web.HttpApplication { protected void Application_Start() { ModelBinders.Binders.DefaultBinder = new InterfaceModelBinder(); } } public class InterfaceModelBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { if (bindingContext.ModelType.IsInterface && controllerContext.RequestContext.HttpContext.Request.Form.AllKeys.Contains(“AssemblyQualifiedName”)) { ModelBindingContext context = new ModelBindingContext(bindingContext); var item = Activator.CreateInstance( Type.GetType(controllerContext.RequestContext.HttpContext.Request.Form[“AssemblyQualifiedName”])); Func modelAccessor = () => […]

AllowHtml属性不起作用

我有一个具有此属性的模型: [AllowHtml] [DisplayName(“Widget for Table”)] [StringLength(1000, ErrorMessage = “Maximum chars 1000”)] [DataType(DataType.Html)] public object TableWidget { get; set; } 这是控制器中的create方法: // // GET: /Admin/Table/Create public ActionResult Create(int id) { Season season = _seasonRepository.GetSeason(id); var table = new Table { SeasonId = season.SeasonId }; return View(table); } // // POST: /Admin/Table/Create [HttpPost] public ActionResult Create(Table a) […]

与嵌套子模型和ASP.NET MVC中的PartialViews进行模型绑定

我有以下类型和类: namespace MVC.Models public class Page { public EditableContent Content {get; set; } } public class EditableContent { public TemplateSection SidebarLeft {get; set; } public TemplateSection SidebarRight {get; set; } } 我想在Edit.aspx视图中编辑Page实例。 因为EditableContent也附加到其他模型,所以我有一个名为ContentEditor.ascx的PartialView ,它是强类型的,并且接受一个EditableContent实例并呈现它。 渲染部分一切正常,但是当我发布时 – 我的ContentEditor内的所有内容都没有绑定 – 这意味着Page.Content为null 。 在PartialView上,我使用强类型的Html Helpers来执行此操作: m.TemplateId) %> 但是因为ContentEditor.ascx呈现的表单上的输入元素没有获得其id属性的Content前缀 – 这些值不会绑定到Page 。 我尝试使用松散类型的助手来克服这个问题: 当我处理一个属于List的属性时,它变得非常难看。 然后我必须手动渲染集合索引。 我应该将Page和EditableContent作为参数添加到控制器操作中吗?: public ActionResult Edit(Page […]

用于generics类型的ASP.NET MVC模型绑定器

是否可以为generics类型创建模型绑定器? 例如,如果我有一个类型 public class MyType 有没有办法创建一个适用于任何类型的MyType的自定义模型绑定器? 谢谢,内森

属性的自定义模型绑定器

我有以下控制器操作: [HttpPost] public ViewResult DoSomething(MyModel model) { // do something return View(); } MyModel如下: public class MyModel { public string PropertyA {get; set;} public IList PropertyB {get; set;} } 所以DefaultModelBinder应该没有问题地绑定它。 唯一的事情是我想使用特殊/自定义绑定器来绑定PropertyB ,我也想重用这个绑定器。 所以我认为解决方案是在PropertyB之前放置一个ModelBinder属性,这当然不起作用(属性上不允许使用ModelBinder属性)。 我看到两个解决方案: 要在每个属性上使用动作参数而不是整个模型(我不喜欢,因为模型有很多属性),如下所示: public ViewResult DoSomething(string propertyA, [ModelBinder(typeof(MyModelBinder))] propertyB) 要创建一个新类型,可以说MyCustomType: List并注册此类型的模型绑定器(这是一个选项) 也许为MyModel创建一个绑定器,重写BindProperty ,如果属性为”PropertyB”则使用我的自定义绑定器绑定该属性。 这可能吗? 还有其他解决方案吗?

模型列表的远程validation

我使用了以下教程: http : //msdn.microsoft.com/en-us/library/gg508808%28VS.98%29.aspx 一切似乎都很好,但在我的情况下,字符串Username总是返回null。 经过大量的研究,我发现每个人都发现了BIND前缀。 在许多情况下这会很棒,但不是这个。 我应该注意所有的属性和名称排列,但是在我的for循环中,EditorFor创建了一个[i] .Username字段,这不会映射到任何模型属性。 问题:我想我想将[i] .Username映射到用户名,其中i是0-infinity中的任何数字,所以当它GETS时,该值会正确地传递给Action。 我该怎么做呢? 如果这是错误的,我该怎么做才能对表中的特定行进行validation? @for (var i = 0; i < Model.Count; i++) { BLAH BLAH BLAH CODE FOR BUILDING TABLE ROWS @Html.EditorFor(modelItem => Model[i].Username) } 因为如果不是成千上万的记录,我在技术上可以拥有数百个,我宁愿没有一个全部1000的绑定PREFIX。我从根本上错过了一些东西吗? 我是ASP.NET MVC的新手,习惯了WebForms,所以我觉得有时候我会混合概念并混合一些完全错误的东西。 编辑:我通过执行以下操作修复它,但不确定这是否是最好的主意。 我将参数设置为没有[i]前缀的FieldName,但仍然检索带有[i]前缀的元素。 Javascript不是我的Forte所以如果它太可怕请告诉我。 adapters.add(“remote”, [“url”, “type”, “additionalfields”], function (options) { var value = { url: options.params.url, type: […]