C#:在foreach循环抛出错误中尝试向int添加填充
试图完成一些基本的事情,但我可能试图以错误的方式解决问题 我有一个DB generate ID。出于显示目的,他们希望它如下所示:C#:在foreach循环抛出错误中尝试向int添加填充,c#,asp.net,asp.net-mvc,string,C#,Asp.net,Asp.net Mvc,String,试图完成一些基本的事情,但我可能试图以错误的方式解决问题 我有一个DB generate ID。出于显示目的,他们希望它如下所示: 00001 00002 00003 ... 04521 etc 因此,在我呈现ID的页面中,我尝试进行基本的字符串操作(string.PadLeft),但它给了我一个编译错误 An object reference is required for the non-static field, method, or property 'string.PadLeft(i
00001
00002
00003
...
04521
etc
因此,在我呈现ID的页面中,我尝试进行基本的字符串操作(string.PadLeft),但它给了我一个编译错误
An object reference is required for the non-static field, method, or property 'string.PadLeft(int, char)'
老实说,我不确定这个错误告诉了我什么,除非‘你的代码不能以这种方式工作’
这是基本代码。它是和ASP.NET MVC4视图:
@foreach (var item in Model.Projects)
{
char pId = Convert.ToChar(item.ProjectId);
string requestWithPad = String.PadLeft(5, paddingChar: pId);
<tr>
<td>
@Html.ActionLink(requestWithPad, "Edit", new { id = item.ProjectId }, new { @class = "btn btn-inverse btn-block" })
</td>
....
}
@foreach(Model.Projects中的变量项)
{
char pId=Convert.ToChar(item.projectd);
stringrequestWithPad=string.PadLeft(5,paddingChar:pId);
@ActionLink(requestWithPad,“Edit”,new{id=item.ProjectId},new{@class=“btn btn inverse btn block”})
....
}
我想我要做的很简单,我只是知道我做的地方不对,那么我应该在哪里做呢
注意:我知道这可以通过更改identity insert在sql server中的工作方式轻松实现,出于各种原因,这不是我的选项。您应该在字符串实例上调用PadLeft:
myString.PadLeft(5, pId);
item.ProjectId.PadLeft(5,'0');
您正在调用它,就好像它是string类的静态函数,而不是bueno
根据所需的输出,我怀疑您想要这样的输出(假设ProjectId是字符串):
方法
PadLeft
不是静态方法。您需要在字符串的实例上调用它
int desiredLength = 6;
foreach(....)
{
string sID = item.ProjectId.ToString();
int paddingNeeded = desiredLength-sID.Length;
if(paddingNeeded > 0)
{
sID = sID.PadLeft(paddingNeeded, '0');
}
//.....
}
假设ProjectId是整数类型的数字,而不是包含数字的字符串,则可以执行以下操作:
string requestWithPad = item.ProjectId.ToString("D5");
当然,您也可以将其内联,因为它非常简单:
@Html.ActionLink(item.ProjectId.ToString("D5"), "Edit", new { id = item.ProjectId }, new { @class = "btn btn-inverse btn-block" })
那条线没有任何意义。有错误的那条线。