asp.net mvc:允许输入字段使用多种输入格式
我想允许输入字段有多种输入格式。就我而言,它是一个经度字段。在数据库中,我将其设置为十进制(18,10)。它期望收到一个逗号分隔值,例如 16,2345678,但 Google 地图或某些用户正在使用点,例如 16.2345678 我不想返回错误,只是很高兴将其转换为预期的数据库格式。
我尝试在我的元数据验证类(使用实体框架)中执行此操作,
public partial class Job
/*[Bind(Exclude = "ID")]*/
public class JobMetaData
{
public object Longitude
{
get { return this.Longitude; }
set { this.Longitude = value; /* Seems that this point isnt reached*/ }
}
但不幸的是,未调用设置器,并且 ViewState.isValid 仅返回 false。
[HttpPost]
public ActionResult Edit(Job model)
{
// parse the long-lat if needed here??
try
{
if (!ModelState.IsValid)
{
我应该在哪里尝试解析该值以允许两个值(逗号分隔和点分隔)转换它们并保护它。
我对另一个字段有同样的问题:我希望用户输入 4 或 4€,以防删除 € 符号并将其作为数字保存到数据库中。
感谢您的帮助。
I want to allow multiple input-formats for a input field. In my case it is a Longitude field. In the DB I set it to decimal(18,10). It expects to recieve a comma-separated-value e.g. 16,2345678 but Google Maps or some Users are using a dot e.g. 16.2345678
I dont want to return an error but simply be glad and transform it to the expected db-format.
I tried to do it in my MetaData Validation Class (using Entity Framework)
public partial class Job
/*[Bind(Exclude = "ID")]*/
public class JobMetaData
{
public object Longitude
{
get { return this.Longitude; }
set { this.Longitude = value; /* Seems that this point isnt reached*/ }
}
but unfortunatly the setter is not called and the ViewState.isValid returns simply false.
[HttpPost]
public ActionResult Edit(Job model)
{
// parse the long-lat if needed here??
try
{
if (!ModelState.IsValid)
{
Where should I try to parse the value to allow both values (comma-separated and dot-separated) transform them and safe it.
I have the same issue for another field: I would like the user to enter 4 or 4€, in case just delete the €-sign and save it as a number to db.
Thanks for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您在其他领域遇到同样的问题。
作为最佳实践 -
1] 使用 ViewModel“JobViewModel”
2] 这样,如果需要,您可以为其他属性创建自定义验证属性
3] 在编辑帖子中接受 ViewModel。
[http邮报]
公共 ActionResult 编辑(作业模型)
{
4] 如果 Modellstate isValid 则执行所需的解析,然后将其保存到数据库。
编辑
If you have same issue for another field.
as a best practise -
1] use ViewModel "JobViewModel"
2] so that If required you can create Custom validation attributes for your other properties
3] In Edit Post accept ViewModel.
[HttpPost]
public ActionResult Edit(Job model)
{
4] and if Modellstate isValid perform required parsing and then save it to database.
EDIT
使用字符串类型并用它做任何你想做的事情。
Use the string type and do whatever you want with it.