繁体   English   中英

如何将C#.NET MVC中的用户输入数据保存到列表中?

[英]How do I save user input data in C#.NET MVC to a list?

我对使用MVC模式非常陌生,但是我想做的是让用户输入一些数字,然后每次他们提交数字时,它都会被添加到列表中。 但是,列表在两次按下按钮之间就被擦除了,我目前在控制器中拥有所有列表内容。

控制者

public class NumberController : Controller
{
    List<int> numList = new List<int>();

    // GET: Number
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult ProcessNumber(Number number)
    {
        int RNo = number.RNum;
        numList.Add(RNo);
        string sequenceList = "";
        foreach (int num in numList) { sequenceList = sequenceList + ", " + num; }

        ViewBag.Message = "Number " + RNo + " saved successfully!" + " This is your current sequence :" + sequenceList + " A total of " + numList.Count + "numbers.";
        return View("Index");
    }
}

然后在视图中,我有这个。

@model TechMVC.Models.Number

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

@using (Html.BeginForm("ProcessNumber", "Number", FormMethod.Post)) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Number</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.RNum, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.RNum, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.RNum, "", 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" />
                <p>@ViewBag.Message</p>
            </div>
        </div>
    </div>
}

看起来像这样:

网站版本

我对使它看起来花哨不感兴趣,只是我仍然不太确定MVC框架。 我知道我已经在这里将数据从用户发送到视图,然后再发送到控制器,但是在某个时候我是否也使用过模型? 我应该将列表存储在模型中还是在视图中?

您不能将这些值保留在控制器变量中。 Web是无状态的,并且每个HTTP请求都将执行代码的新实例。 因此,您需要将数据保留在某处。

您可以利用会话状态应用程序状态来解决此问题。 欲了解更多信息:

在实际的应用程序中,您肯定需要数据库存储。 不管哪个存储都可以,您可以使用Sqlite,SQL Server,MySQL,XML文档或任何您想要的东西。 如果您不熟悉.NET Web开发,我建议您开始使用Entity Framework来满足您的数据访问需求。 更多信息:

您必须将数据存储在某个地方。 例如,您可以将其存储在会话中

List numList = null; int rNo = number.RNum; 字符串sequenceList = string.Empty;

  if (Session["NumList"] != null) { //session exist. set numList = session numList = Session["NumList"] as List<int>; } else { //session not exist. set numList as new numList = new List<int>(); } //add number to numList numList.Add(rNo); //set session = numList Session["NumList"] = numList; //make join oj numList sequenceList = String.Join(", ", numList.ToArray()); //set message in a ViewBag ViewBag.Message = $"Number {rNo} saved successfully!" + $" This is your current sequence : {sequenceList}" + $" A total of {numList.Count} numbers."; return View("Index"); 

我没有Vs,所以可能会出错

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM