bahar_engineer
پنج شنبه 17 دی 1394, 11:41 صبح
با سلام
من تازه وارد mvc شدم
فرض کنیم یه مدل داریم به اسمprice
که خودش 2 تا حالت داره ... formated که قیمت را به صورت سه رقم سه رقم جدا کرده و از نوع string هست
و mainprice که حالت float هست
میخوام برنامه بصورت اتوماتیک خودش عمل کنه . هر جا قراره به کاربر قیمت رو نشون بده نوع formated اون رو نشون بده و هر جا قراره عملیات انجام بده یا بره توی دیتابیس نوع mainprice رو استفاده کنه.
به عبارتی من همه جا بزنم product.price
اون خودش تشخیص بده کدوم فیلد price رو بذاره
جستجو کردم به نظر می رسه با استفاده از action filter و model binder می شه این کار رو انجام داد
تا یه جاهایی هم پیش رفتم
اما گیج شدم
اگه ممکنه راهنمایی کنید
ممنون
اگه راه بهتری هم هست بفرمایید
این کد model binder من هست :
public class PriceBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = controllerContext.HttpContext.Request.Form["TotalPrice.MainPrice"];
if (value != null)
{
var price = float.Parse(value.ToString().Replace(",", ""));
return price;
}
return 0;
}
}
در مورد actionfilter هم نمی دونم چیکار کنم!
این کد رو تست کردم اما به جواب نرسیدم
public class PriceActionFilter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
// Models.mymodel currmodel = new Models.mymodel();
List<price.Product> currprice = new List<price.Product>();
currprice = (List<price.Product>)filterContext.Controller.ViewData.Model;
foreach (price.Product prics in currprice)
{
price.Price prs = new price.Price();
prs.MainPrice = prics.TotalPrice.MainPrice;
prs.PriceFormatted = float.Parse(prics.TotalPrice.MainPrice.ToString()) .ToString("#,#");
prics.TotalPrice = prs;
}
filterContext.Controller.ViewData.Model = currprice;
}
}
من تازه وارد mvc شدم
فرض کنیم یه مدل داریم به اسمprice
که خودش 2 تا حالت داره ... formated که قیمت را به صورت سه رقم سه رقم جدا کرده و از نوع string هست
و mainprice که حالت float هست
میخوام برنامه بصورت اتوماتیک خودش عمل کنه . هر جا قراره به کاربر قیمت رو نشون بده نوع formated اون رو نشون بده و هر جا قراره عملیات انجام بده یا بره توی دیتابیس نوع mainprice رو استفاده کنه.
به عبارتی من همه جا بزنم product.price
اون خودش تشخیص بده کدوم فیلد price رو بذاره
جستجو کردم به نظر می رسه با استفاده از action filter و model binder می شه این کار رو انجام داد
تا یه جاهایی هم پیش رفتم
اما گیج شدم
اگه ممکنه راهنمایی کنید
ممنون
اگه راه بهتری هم هست بفرمایید
این کد model binder من هست :
public class PriceBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = controllerContext.HttpContext.Request.Form["TotalPrice.MainPrice"];
if (value != null)
{
var price = float.Parse(value.ToString().Replace(",", ""));
return price;
}
return 0;
}
}
در مورد actionfilter هم نمی دونم چیکار کنم!
این کد رو تست کردم اما به جواب نرسیدم
public class PriceActionFilter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
// Models.mymodel currmodel = new Models.mymodel();
List<price.Product> currprice = new List<price.Product>();
currprice = (List<price.Product>)filterContext.Controller.ViewData.Model;
foreach (price.Product prics in currprice)
{
price.Price prs = new price.Price();
prs.MainPrice = prics.TotalPrice.MainPrice;
prs.PriceFormatted = float.Parse(prics.TotalPrice.MainPrice.ToString()) .ToString("#,#");
prics.TotalPrice = prs;
}
filterContext.Controller.ViewData.Model = currprice;
}
}