我正在研究 词法分析器 ,我想在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>
这是我的最终观点:
我的代码没有没有错误,但是当我单击 submit 按钮时,表中没有显示没有任何内容。我想念什么?还是有什么问题?
PD:我的词法分析器逻辑具有递归方法,因此它将不断向列表中添加数据。
更新:我只是通过将List设置为static
答案 0 :(得分:0)
当前,您的表单不知道要定位哪个控制器或操作。
Html.BeginForm()
有多个重载。
例如:
BeginForm(HtmlHelper, String, String, Object, FormMethod, Object)
将一个开始标签写入响应并设置操作标签 到指定的控制器,操作和路由值。表格使用 指定的HTTP方法,并包含HTML属性。
在此处检查overloads