0

试图完成一些基本的事情,但我可能会以错误的方式尝试解决方案。

我有一个数据库生成 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>
        ....
}

我认为我想做的很简单,我只知道我没有在正确的地方做这件事,那么我应该在哪里做呢?

注意:我知道这很容易通过更改身份插入在 sql server 中的工作方式来完成,由于各种原因,这不是我的选择。

4

3 回答 3

7

您应该在字符串的实例上调用 PadLeft:

myString.PadLeft(5, pId);

您将其称为不是 bueno 的字符串类的静态函数。

根据您想要的输出,我怀疑您想要这样的东西(假设 ProjectId 是一个字符串):

item.ProjectId.PadLeft(5,'0');
于 2013-05-23T16:03:10.313 回答
1

假设 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" })
于 2013-05-23T19:23:10.620 回答
1

该方法PadLeft不是静态方法。您需要在字符串的实例上调用它。

int desiredLength = 6;

foreach(....)
{
    string sID = item.ProjectId.ToString();
    int paddingNeeded = desiredLength-sID.Length;
    if(paddingNeeded > 0)
    {
        sID = sID.PadLeft(paddingNeeded, '0');
    }
    //.....
}
于 2013-05-23T16:06:50.613 回答