asp.net-mvc – ASP.NET MVC – 能够处理数组的自定义模型绑定器
发布时间:2020-05-24 09:05:51 所属栏目:asp.Net 来源:互联网
导读:我需要实现一种功能,允许用户以任何形式输入价格,即允许10美元,10美元,10美元……作为输入. 我想通过为Price类实现自定义模型绑定器来解决这个问题. class Price { decimal Value; int ID; } 表单包含一个数组或价格作为键 keys:Prices[0].ValuePrices[0].IDP
|
我需要实现一种功能,允许用户以任何形式输入价格,即允许10美元,10美元,10美元……作为输入. 我想通过为Price类实现自定义模型绑定器来解决这个问题. class Price { decimal Value; int ID; }
表单包含一个数组或价格作为键 keys: "Prices[0].Value" "Prices[0].ID" "Prices[1].Value" "Prices[1].ID" ... ViewModel包含一个Price属性: public List<Price> Prices { get; set; }
只要用户在Value输入中输入十进制可转换字符串,默认模型绑定器就可以正常工作. 我的ModelBinder for Price类型到目前为止: public object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)
{
Price res = new Price();
var form = controllerContext.HttpContext.Request.Form;
string valueInput = ["Prices[0].Value"]; //how to determine which index I am processing?
res.Value = ParseInput(valueInput)
return res;
}
如何实现正确处理数组的自定义模型Binder? 解决方法明白了:重点是不要尝试绑定单个Price实例,而是实现List< Price>的ModelBinder.类型:public object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)
{
List<Price> res = new List<Price>();
var form = controllerContext.HttpContext.Request.Form;
int i = 0;
while (!string.IsNullOrEmpty(form["Prices[" + i + "].PricingTypeID"]))
{
var p = new Price();
p.Value = Process(form["Prices[" + i + "].Value"]);
p.PricingTypeID = int.Parse(form["Prices[" + i + "].PricingTypeID"]);
res.Add(p);
i++;
}
return res;
}
//register for List<Price>
ModelBinders.Binders[typeof(List<Price>)] = new PriceModelBinder(); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP.NET MVC术语让我沮丧 – 为什么’ViewM
- 设置ASP.NET页面不被缓存(客户端/服务器端取消缓存方法)
- 如何知道asp.net 3.5 sp1和asp.net mvc是否安装在服务器中?
- asp.net jQuery Ajax用户登录功能的实现
- asp.net – WebAPI返回XML
- jwt – ASP.NET 5 OAuthBearerAuthentication:以下认证方案
- asp.net – MVC 4 – 在局部视图中使用不同的模型
- asp.net – 会话 – 多个浏览器选项卡 – 不同的会话?
- asp.net – 找不到ID为“xxx”的UpdatePanel.如果它正在动态
- asp.net-mvc – ASP.NET MVC Beta 1 – 哪里是Html.RenderP
推荐文章
站长推荐
- asp.net-mvc – 如何使基于列表的编辑器模板正确
- asp.net – 安装更新KB3154070后,iframe不会在IE
- 为什么ASP.NET身份中的Logout使用POST而不是GET?
- asp.net-mvc – 使用AWS .NET SDK进行SNS订阅确认
- asp.net-mvc – ASP.NET MVC Beta 1 – 哪里是Ht
- asp.net-mvc – 在asp .net mvc 5中显示外部网页
- asp.net-mvc – 企业库日志记录 – 从格式中删除
- asp.net-core – 从ActionFilterAttribute设置Vi
- .net – 抱歉,处理您的请求时出错
- asp.net-mvc-4 – ASP.NET MVC:脚本捆绑何时决定
热点阅读
