【发布时间】:2021-05-13 09:46:02
【问题描述】:
在我的模型中,我有一个 cNumber 字符串,它可以是不同的长度(16,24 和 28),我需要在表格中的视图中对其进行相应的格式化。
16 length: ########-########
24 : ########-########-########
28 : #### #### #### #### #### #### ####
更新:我确实有一种格式化方法,但我很难将它传递给视图以显示在表的正确记录中。
static string Format(string cNumber)
{
if (cNumber.Length == 16 || cNumber.Length == 24)
{
cNumber= Regex.Replace(cNumber, ".{8}", "$0-");
}
else if (cNumber.Length == 28)
{
cNumber= Regex.Replace(cNumber, ".{4}", "$0 ");
}
else
{
return cNumber;
}
cNumber= cNumber.Remove(cNumber.Length - 1);
return cNumber;
}
public ActionResult Index(Guid id)
{
var PartnerCNumbers = db.PartnerCNumbers.Include(p => p.Partner).Where(p=>p.Partner.PartnerGuid == id);
var cNumList = new List<string>();
foreach (var cn in PartnerCNumbers)
{
cNumList.Add(Format(cn.cNumber));
}
ViewData["cNumbers"] = cNumList;
ViewBag.PartnerGuid = id;
return View(PartnerCNumbers.ToList());
}
在我看来,我将 ViewData 作为列表
@model IEnumerable<Models.PartnerCNumbers>
IEnumerable<string> cNumbers= ViewData["cNumbers"] as IEnumerable<string>;
@foreach (var item in Model)
{
//int cLength = item.cNumber.Length;
<tr>
<td>
@Html.DisplayFor(modelItem => item.Currency)
</td>
<td>
//@Html.DisplayFor(modelItem => item.cNumber)
//THIS IS WHERE I NEED THE FORMATTED cNUMBER
</td>
<td>
@Html.DisplayFor(modelItem => item.sCode)
</td>
</tr>
}
最好的方法是什么?我在视图本身中尝试了 String.Format(),但我无法转换它,因为它已经作为字符串存储在数据库中。 例如,ViewModel 可以根据长度属性具有不同的注释吗?或者用javascript有可能吗
【问题讨论】:
标签: javascript c# asp.net-mvc razor