C#:在foreach循环抛出错误中尝试向int添加填充

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

试图完成一些基本的事情,但我可能试图以错误的方式解决问题

我有一个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(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" })

那条线没有任何意义。有错误的那条线。