如何从MVC中的对象列表添加和显示数据?

时间:2019-05-15 19:19:21

标签: c# asp.net-mvc

我正在研究 词法分析器 ,我想在MVC中的表上显示所有数据。但是为了简化代码,我将添加一个示例以显示我想要实现的目标。我有一个 logic.cs 类,其中Lexical Analyzer将接收输入的字符串,我想根据Lexical Analyzer方法将 Add 项目添加到列表中。 / p>

这是我的代码:

控制器

    Repository repo = new Repository();
    logic logica = new logic();

    public ActionResult Index()
    {
        var getrepo = repo.GetData();
        return View(getrepo.ToList());
    }

    [HttpPost]
    public ActionResult Index(string str) {

        logica.Logic_t(str); //I send str parameter to the logic class
        var getrepo = repo.GetData();
        return View(getrepo.ToList());

模型

Repository.cs

 public class Repository
{
    public List<data_table> data = new List<data_table>() { };


    public List<data_table> GetData() {
        return data;
    }
}

data_table.cs

  public int Line { get; set; }
  public string Token { get; set; }

logic.cs

 Repository repo = new Repository();

    public void Logic_t(string s)
    {
        int Line = 1;

        repo.data.Add(new data_table { Line =Line , Token = " NUMBER" });
    }

查看

@model IEnumerable<pruebaarray.Models.data_table>

@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
    <textarea rows="10" cols="50" class="textarea" name="str">

    </textarea>
    <input  type="submit" value="send-to-logic" class="btn btn-primary"/>
}

<table class="table-bordered">
    <tr>
        <th>Line</th>
        <th>Token</th>
    </tr>

    @foreach (var item in Model) {
        <tr>
            <th>@item.Line</th>
            <th>@item.Token</th>
        </tr>
    }
</table>

这是我的最终观点:

my final view

我的代码没有没有错误,但是当我单击 submit 按钮时,表中没有显示没有任何内容。我想念什么?还是有什么问题?

PD:我的词法分析器逻辑具有递归方法,因此它将不断向列表中添加数据。

更新:我只是通过将List设置为static

1 个答案:

答案 0 :(得分:0)

当前,您的表单不知道要定位哪个控制器或操作。

Html.BeginForm()有多个重载。

例如:

BeginForm(HtmlHelper, String, String, Object, FormMethod, Object)
  

将一个开始标签写入响应并设置操作标签   到指定的控制器,操作和路由值。表格使用   指定的HTTP方法,并包含HTML属性。

在此处检查overloads