从MVC 5中的列表中查看断行

时间:2016-10-30 18:30:06

标签: asp.net-mvc razor asp.net-mvc-5

我有一个包含应该在视图中显示的字符串对象的List。但我有正确的输出问题。在列表中有单词,如电​​脑,屏幕,鼠标。现在它显示为ComputerScreenMouse,并希望它显示为

Computer

Screen

Mouse

我在运行时检查了对象,并正确添加字符串,如

[0] Computer [1] Screen [2] Mouse

这是我使用的代码

@Html.DisplayFor(m => Model.MyParts, new { htmlAttributes = new { @class = "form-control " } })

我尝试了几个不同的东西与foeach循环但似乎没有任何作用。如果我使用@ Html.Raw并放入一个br标签,它会打印出如下列表:

ComputerScreenMouse ComputerScreenMouse ComputerScreenMouse

@foreach (var item in Model.MyParts)
{

    @Html.Raw(Html.DisplayFor(m => Model.MyParts, new { htmlAttributes = new { @class = "form-control " } }) + "</br>")
}

模型看起来像这样。在视图中我使用@modelGlossary_mvc.Models.Parts

public class DoTestModel
{
    public string Stuff{ get; set; }
    public string OtherStuff { get; set; }
    public List<Parts> Parts { get; set; }
}

public class Parts
{
    public List<string> MyParts{ get; set; }
    public List<string> SpareParts{ get; set; }
    public int NumberOfParts { get; set; }
}

2 个答案:

答案 0 :(得分:1)

x = -5:0.1:5; subplot(3,3,[4 5 7 8]) plot(x,cos(x-2),x,sin(x),x,-x-0.5,x,0.1.*x+0.1) ax = gca; area = [-0.4 -0.4 0.25 0.25]; inlarge = subplot(3,3,3); panpos = inlarge.Position; delete(inlarge); inlarge = zoomin(ax,area,panpos); title(inlarge,'Zoom in') / #include <stdio.h> #include <string.h> #define BUF_LEN 30 void doThings(char *buffer) { char anotherBuffer[BUF_LEN]; int i; for (i = 0; i <= BUF_LEN; i++) { char temp[2]; snprintf(temp, 2, "%s", buffer + i); strcat(anotherBuffer, temp); } printf("%s\n", anotherBuffer); } int main() { char aString[BUF_LEN] = "1234567890123456789012345678901"; printf("%s\n", aString); //This is doThings within main int i; for (i = 0; i <= BUF_LEN; i++) { char temp[2]; snprintf(temp, 2, "%s", aString + i); printf("%s", temp); } printf("\n"); //Now execute doThings passing aString doThings(aString); return 0; } Display(For)属性来说并不理想。它们应保留用于专门的显示和编辑模板,或具有Editor(For)属性的属性。

您的模型属性List<string>是一个简单的字符串列表。

[Display]

保持简单,输出每个字符串(例如,在无序列表中):

MyParts

好的,但如果public List<string> MyParts{ get; set; }属性是<ul> @foreach(var part in Model.MyParts) { <li>@part</li> } </ul> 个对象的列表怎么办?这是MVC MyParts / PartModel闪耀的地方。

<强> PartModel

DisplayFor

查看模型

EditorFor

Razor查看

public class PartModel
{
   public string Name { get; set; }
   public int Quantity { get; set; }
}

PartModel的显示模板

// your view model
public class Parts
{
    // now a list of PartModels not strings
    public List<PartModel> MyParts{ get; set; }
    public List<string> SpareParts{ get; set; }
    public int NumberOfParts { get; set; }
}

此文件可位于多个位置。这取决于您在整个项目中需要分享的数量:

  1. \视图\共享\ DisplayTemplates \ PartModel.cshtml
  2. \浏览\\ DisplayTemplates \ PartModel.cshtml

答案 1 :(得分:0)

取决于您在HTML中包装输出的方式取决于结果。你是在表格中使用它吗?因为我通常只对字段使用表单控件。

由于您的输出不是HTML,因此如果需要表单控件,则需要尝试此操作。

    @foreach (var item in Model.MyParts)
{
   @Html.DisplayFor(modelItem => item, new { htmlAttributes = new { @class = "form-control " } })
<br />
}

没有表单控件只显示列表:

@foreach (var item in Model.MyParts)
    {
       @Html.DisplayFor(modelItem => item )
    <br />
    }

根据您的HTML包装器的使用方式,您可能需要也可能不需要<br />