将用户添加到列表MVC

时间:2015-12-16 14:01:21

标签: asp.net-mvc

我有一个表单,用户应该在其中输入NameWage并单击按钮添加。单击“添加”按钮时,该用户应显示在列表中。

这是我尝试的方式。

控制器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TimeIsMoney.Models;

namespace TimeIsMoney.Controllers
{
    public class HomeController : Controller
    {

        List<UserModel> users = new List<UserModel>();
        public ActionResult Index(string returnUrl)
        {
            ViewBag.ReturnUrl = returnUrl;
            return View();
        }

        public ActionResult AddUser(UserModel user) 
        {
            users.Add(user);
            return View(users);
        }
    }
}

查看:

@model TimeIsMoney.Models.LoginModel
@{

}
@functions{
    public string GetAntiForgeryToken()
    {
        string cookieToken, formToken;
        AntiForgery.GetTokens(null, out cookieToken, out formToken);
        return cookieToken + ":" + formToken;                
    }
}



<div id="main-content" class="col-md-8 col-md-offset-2">
    <div class="col-md-12 row">
        <h1>Time is money my friend!</h1>
    </div>

    <div class="col-md-12 row">
        <h2>1000kr</h2>
    </div>

    <div class="col-md-12 row">
        <button class="btn" onclick="start()">Start</button>
        <button class="btn" onclick="reset()">Reset</button>
    </div>

    <div class="col-md-12 row">
        <form >
            <input type="text" placeholder="Name" />
            <input type="number" placeholder="Hourly wage" />
            <input type="submit" value="Add" onclick="AddUser()" />
        </form>
    </div>

    <div class="col-md-12 row">
        <div class="col-md-3 col-md-offset-1">
            <label>Name:</label>
            <ul>
                <li>Dave</li>
                <li>Pete</li>
            </ul>
        </div>
        <div class="col-md-4">
            <label>Wage:</label>
            <ul>
                <li>500kr/h</li>
                <li>500kr/h</li>
            </ul>
        </div>
    </div>


    <br />
    <br />






</div>

型号:

namespace TimeIsMoney.Models
{
    public class UserModel
    {
        [Required]
        [DataType(DataType.Text)]
        [DisplayName("Username")]
        public string UserName { get; set; }



        [Required]
        [DataType(DataType.Text)]
        [DisplayName("Wage")]
        public string Wage { get; set; }
    }


}

我是在正确的道路上吗? 我怎么能从这里继续前进?

更新:

public ActionResult AddUser(UserModel user) 
    {
        var list = Session["myUsers"] as List<UserModel>;
        list.Add(user);
        return View(list);
    }

1 个答案:

答案 0 :(得分:1)

除了您尝试存储用户列表的方式之外,您主要走在正确的道路上。

由于ASP.NET MVC控制器实例是为每个请求创建的,并且在呈现视图并传递给浏览器之后处理 - 它将是新控制器,每个请求都会创建新的List<UserModel>

所以你必须将它存储在其他地方(会话变量,服务器上的文件,磁盘,数据库等)。通常数据库是最佳选择。

如果你想将它存储在会话变量中,你应该在Global.asax中添加这样的内容:

protected void Session_Start(object sender, EventArgs e)
{
    Session["myUsers"] = new List<UserModel>();
}

然后在您的控制器方法中,您将能够以

的形式访问此列表
var list = Session["myUsers"] as List<UserModel>;