从网站获取输入并将其添加到C#列表
因此,我目前正在学习ASP.NETMVC来完成我的工作,我只是在玩它来学习一些东西。目前,我有一个网页,上面有一个C#code(模拟数据库)的硬编码列表,还有一个Create按钮,可以打开菜单,让我为一个新人添加信息,然后单击底部的Create按钮进行添加。但是,“创建”按钮当前不起作用。我如何创建一个方法来获取该输入并将其添加到列表中,以及该方法应该放在哪里?人事管理员?个人模型?谢谢你的帮助从网站获取输入并将其添加到C#列表,c#,html,asp.net-mvc,C#,Html,Asp.net Mvc,因此,我目前正在学习ASP.NETMVC来完成我的工作,我只是在玩它来学习一些东西。目前,我有一个网页,上面有一个C#code(模拟数据库)的硬编码列表,还有一个Create按钮,可以打开菜单,让我为一个新人添加信息,然后单击底部的Create按钮进行添加。但是,“创建”按钮当前不起作用。我如何创建一个方法来获取该输入并将其添加到列表中,以及该方法应该放在哪里?人事管理员?个人模型?谢谢你的帮助 namespace ASPpractice.Controllers {
namespace ASPpractice.Controllers
{
public class PersonController : Controller
{
List<PersonModel> people = new List<PersonModel>();
// GET: Person
public ActionResult Index()
{
return View();
}
public ActionResult Person()
{
people.Add(new PersonModel {Age = 76, Name = "Rick", Title = "Drunk Mad Scientist"});
people.Add(new PersonModel {Age = 13, Name = "Morty", Title = "Tool of a Grandson"});
people.Add(new PersonModel {Age = 35, Name = "Jerry", Title = "Unemployed Dumbass Father"});
return View(people);
}
public ActionResult Create()
{
return View();
}
}
}
@model ASPpractice.Models.PersonModel
@{
ViewBag.Title=“创建”;
}
创造
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
个人模型
@Html.ValidationSummary(true,“,new{@class=“text danger”})
@LabelFor(model=>model.Name,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.Name,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.Name,“,new{@class=“text danger”})
@LabelFor(model=>model.Title,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.Title,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.Title,“,new{@class=“text danger”})
@LabelFor(model=>model.Age,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.Age,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.Age,“,new{@class=“text danger”})
}
@ActionLink(“返回列表”、“个人”)
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
}
您需要做的是在Controller中调用一个方法,该方法将填充列表。
乍一看,您的编辑器应该很好,并正确填充您的模型
使用
将调用您的ActionMethod,您应该在其中接受PersonModel
在这里,您可以对提交的模型执行所需的操作。(即将其添加到db表、post、保存或显示)
希望这有帮助。您需要做的是在Controller中调用一个方法,该方法将填充列表。 乍一看,您的编辑器应该很好,并正确填充您的模型 使用 将调用您的ActionMethod,您应该在其中接受PersonModel 在这里,您可以对提交的模型执行所需的操作。(即将其添加到db表、post、保存或显示)
希望这有帮助。网站是基于请求的。。。。因此,您要将其添加到的列表不能存在于控制器中,因为每次请求控制器中的操作时都会创建控制器。 这实际上每次都会重置您的列表
您需要创建一个可以从任何地方访问的静态列表……网站是基于请求的。。。。因此,您要将其添加到的列表不能存在于控制器中,因为每次请求控制器中的操作时都会创建控制器。 这实际上每次都会重置您的列表
您需要创建一个可以从任何地方访问的静态列表……听起来您的学习体验可以从ASP.NET MVC的一些教程中受益匪浅。例如:实际上,您可能有两个
Create
操作。一个将显示一个视图,供用户填写值以创建对象,另一个将接受这些值的表单post并将新创建的对象保存到数据库中。保存后,您会将用户重定向回索引/列表视图,以再次查看所有对象。啊,看起来本教程可能正是我需要的。我通读了msdn上关于mvc模型的几个文档,但不知怎么的,我没有看到这一个。谢谢。听起来你的学习经验可以从ASP.NET MVC的一些教程中受益匪浅。例如:实际上,您可能有两个Create
操作。一个将显示一个视图,供用户填写值以创建对象,另一个将接受这些值的表单post并将新创建的对象保存到数据库中。保存后,您会将用户重定向回索引/列表视图,以再次查看所有对象。啊,看起来本教程可能正是我需要的。我通读了msdn上关于mvc模型的几个文档,但不知怎么的,我没有看到这一个。谢谢。这不起作用,尽管当我填写新人信息时,文本I不会在我单击“创建”按钮时消失。它只是停留在那里。但是当我返回列表页面时,它不会显示新名称;更接近…它添加了它,但它也添加了列表中其他每个项目的副本。我不明白为什么它是静态的会改变这样的行为?原因是控制器是一个对象,每当一个请求到达它的一个动作方法时,就会创建该控制器的一个新实例,尽管在我填写新人信息时,文本I在我单击“创建”按钮时不会消失。它只是停留在那里。但是当我返回列表页面时,它不会显示新名称;更接近…它添加了它,但它也添加了列表中其他每个项目的副本。我不明白为什么它是静态的会改变这样的行为?原因是控制器是一个对象,每当一个请求到达一个控制器时
namespace ASPpractice.Models
{
public class PersonModel
{
private string _Name;
private string _Title;
private int _Age;
public string Name { get { return _Name; } set { this._Name = value; }}
public string Title { get { return _Title; } set { this._Title = value; } }
public int Age { get { return _Age; } set { this._Age = value; } }
}
@model ASPpractice.Models.PersonModel
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>PersonModel</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Age, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Age, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Age, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
<div>
@Html.ActionLink("Back to List", "Person")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
public ActionResult Create(){}
[HttpPost]
public ActionResult Create(PersonModel model)
{
people.Add(new PersonModel {Age = model.Age, Name = model.Name, Title =model.Title});
return View();
}
@using (Html.BeginForm("ActionMethod","Controller",FormMethod.Post))
public ActionResult ActionMethod(PerosnModel vm)...