Asp.net mvc 如何让MVC按钮在单击后填充和显示表格

Asp.net mvc 如何让MVC按钮在单击后填充和显示表格,asp.net-mvc,Asp.net Mvc,我已经找了4到5个小时来研究如何让它工作,但我就是想不出来。我想得到一个既有提交按钮又有删除按钮的表单。submit应该将表单中的数据提交到一个表中,该表将同时填充和创建,而delete按钮将删除最近添加的数据。我试着做什么似乎无关紧要,只是不起作用。每当我点击save按钮时,它只会重新加载带有空表单字段的页面,而没有包含数据的表 我的控制器代码 public class PersonController : Controller { private static List<Per

我已经找了4到5个小时来研究如何让它工作,但我就是想不出来。我想得到一个既有提交按钮又有删除按钮的表单。submit应该将表单中的数据提交到一个表中,该表将同时填充和创建,而delete按钮将删除最近添加的数据。我试着做什么似乎无关紧要,只是不起作用。每当我点击save按钮时,它只会重新加载带有空表单字段的页面,而没有包含数据的表

我的控制器代码

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”);
也没有任何意义。老实说,我甚至不知道了