Asp.net mvc 如何让MVC按钮在单击后填充和显示表格
我已经找了4到5个小时来研究如何让它工作,但我就是想不出来。我想得到一个既有提交按钮又有删除按钮的表单。submit应该将表单中的数据提交到一个表中,该表将同时填充和创建,而delete按钮将删除最近添加的数据。我试着做什么似乎无关紧要,只是不起作用。每当我点击save按钮时,它只会重新加载带有空表单字段的页面,而没有包含数据的表 我的控制器代码Asp.net mvc 如何让MVC按钮在单击后填充和显示表格,asp.net-mvc,Asp.net Mvc,我已经找了4到5个小时来研究如何让它工作,但我就是想不出来。我想得到一个既有提交按钮又有删除按钮的表单。submit应该将表单中的数据提交到一个表中,该表将同时填充和创建,而delete按钮将删除最近添加的数据。我试着做什么似乎无关紧要,只是不起作用。每当我点击save按钮时,它只会重新加载带有空表单字段的页面,而没有包含数据的表 我的控制器代码 public class PersonController : Controller { private static List<Per
public class PersonController : Controller
{
private static List<Person> Persons = new List<Person>();
public ActionResult Index()
{
return View();
}
public ActionResult Start()
{
return View("PersonData");
}
public ActionResult AddPerson(string firstName, string lastName, string birthDate)
{
Person p = new Person();
p.firstName = firstName;
p.lastName = lastName;
p.birthDate = birthDate;
if (Persons.Count > 0)
{
Persons.Add(p);
}
return View("PersonData");
}
public ViewResult DeletePerson()
{
if(Persons.Count > 0)
{
Persons.RemoveAt(0);
}
return View("PersonData");
}
}
公共类PersonController:Controller
{
私有静态列表人员=新列表();
公共行动结果索引()
{
返回视图();
}
公共行动结果开始()
{
返回视图(“PersonData”);
}
public ActionResult AddPerson(字符串firstName、字符串lastName、字符串birthDate)
{
人员p=新人员();
p、 名字=名字;
p、 lastName=lastName;
p、 出生日期=出生日期;
如果(Persons.Count>0)
{
增加(p);
}
返回视图(“PersonData”);
}
public ViewResult DeletePerson()
{
如果(Persons.Count>0)
{
人。移除(0);
}
返回视图(“PersonData”);
}
}
我的视图代码
@model IEnumerable<UsingViewsandModels.Models.Person>
....
@using (Html.BeginForm("AddPerson", "PersonController"))
{
}
<form>
<label name="firstName">First Name: </label>
<input type="text" name="firstName" />
<br />
<label name="lastName">Last Name: </label>
<input type="text" name="lastName" />
<br />
<label name="birthDate">Birth Date: </label>
<input type="text" name="birthDate" />
<br />
<button type="submit" value="Submit" name="AddPerson" onclick="AddPerson()">Save</button>
<button type="submit" value="Delete" name="DeletePerson" onclick="DeletePerson()">Delete</button>
</form>
@if (Model != null && Model.Count() > 0)
{
<table>
<tr><th>FirstName</th><th>LastName</th><th>BirthDate</th></tr>
@foreach (UsingViewsandModels.Models.Person p in Model)
{
<tr>
<td>p.firstName)</td>
<td>p.lastName)</td>
<td>p.birthDate)</td>
</tr>
}
</table>
}
@model IEnumerable
....
@使用(Html.BeginForm(“AddPerson”、“PersonController”))
{
}
名字:
姓氏:
出生日期:
拯救
删除
@if(Model!=null&&Model.Count()>0)
{
姓氏姓氏出生日期
@foreach(在模型中使用Views和Models.Models.Person p)
{
p、 (姓名)
p、 (姓)
p、 出生日期)
}
}
任何帮助都将不胜感激。我很确定我只是个白痴,这很简单。您有以下代码:
return View("PersonData");
这意味着:返回名为“PersonData”的视图
您没有向视图发送任何数据。使用重载并将模型发送到视图,如下所示:
return View("PersonData", Persons);
现在,您的视图可以访问Persons
中的所有数据,并且可以正常工作 您有以下代码:
return View("PersonData");
这意味着:返回名为“PersonData”的视图
您没有向视图发送任何数据。使用重载并将模型发送到视图,如下所示:
return View("PersonData", Persons);
现在,您的视图可以访问
Persons
中的所有数据,并且可以正常工作 我假设您的意思是将其更改为这个返回视图(“PersonData”,Persons),这样做之后,在点击提交时,它仍然不会填充或显示表。不确定问题是什么。@seahawks2458抱歉,是的,这就是我的意思并编辑了答案。您在哪个操作中进行了更改?我在AddPerson()中进行了更改action@seahawks2458为什么有此代码:如果(Persons.Count>0)
?我想,正因为如此,没有人会被列入名单。我之所以被列入名单,是因为我只是在尝试我知道的方法,看看它们是否有效。不管怎样,即使在去掉它之后,它也不起作用。我想你是想把它改成这个返回视图(“PersonData”,Persons)。在这样做之后,当点击submit时,它仍然不会填充或显示一个表。不确定问题是什么。@seahawks2458抱歉,是的,这就是我的意思并编辑了答案。您在哪个操作中进行了更改?我在AddPerson()中进行了更改action@seahawks2458为什么有此代码:如果(Persons.Count>0)
?我想,正因为如此,没有人会被列入名单。我之所以被列入名单,是因为我只是在尝试我知道的方法,看看它们是否有效。不管怎样,即使去掉它,它也不起作用。为什么要有Html.BeginForm()
和
元素?而
元素返回到生成该视图的方法(我假设是Index()
方法,它不向视图传递任何数据。您的onclick=“AddPerson()
和onclick=“DeletePerson()
脚本是什么?以及返回视图(“PersonData”)是什么
也没有任何意义。老实说,我甚至不知道了。onclick可能只是我尝试让它工作的副产品。AddPerson和DeletePerson据我所知只是作为操作结果。Html.BeginForm()它也是我尝试在web上找到的但不起作用的东西的副产品,所以在这一点上我假设它是不需要的如果在单击submit按钮后返回包含表单和表格的更新页面,那么代码中没有多少内容是有意义的。您显示的视图名为PersonData.cshtml
?您调用什么方法来显示该视图?Index()
方法或Start()
method?和returnview(“PersonData”);
只返回视图-它没有向它传递模型,因此没有数据显示。是的,显示的视图是PersonData.cshtml。它是开始()方法调用我相信的视图。如果它只是返回视图,如何让它显示在表单字段返回视图(“PersonData”,Persons);
但您永远不会点击AddPerson()
或DeletePerson()中输入的数据
方法正如我在第一篇评论中提到的,为什么您有一个Html.BeginForm()
和一个
元素?并且
元素返回到生成该视图的方法(我假设该方法是Index()
方法,它不会向视图传递任何数据。您的onclick是什么=“AddPerson()
和onclick=“DeletePerson()
脚本?和返回视图(“PersonData”);
也没有任何意义。老实说,我甚至不知道了