0

这是我的课:

public class MyItem
{
[Key]
public ItemId{get;set;}
public ItemName{get;set;}
public ItemPrice{get;set;}
}

现在我的创建页面中有一个添加按钮:

<input type="submit" value="Create" id="Create" name="Create" />
<input type ="submit" value ="Add" id ="Add" name="Create" />

我有以下控制器。在这里,我想在某种临时存储中的创建视图中添加 ItemName 和 price。我不想在数据库中添加项目,但想在表格的某种 html 助手中显示添加的项目

public ActionResult Create(MyItem myitem, string Create)
{
    if (Create == "Add")
    {

//is there any Html helper that will save the
added items and make a view?
//can I do this without using javascript
    }
    else
    if (ModelState.IsValid)
    {
        db.Items.Add(myitem);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(myitem);
}
4

2 回答 2

2

您可以随时使用SESSION临时存储数据,然后当用户单击保存时,您可以从会话中获取数据并存储在数据库中

public ActionResult Create(MyItem myitem, string Create)
        {
            if (Create == "Add")
            {
                var list = Session[myitem] ?? new List<MyItem>();
                list.Add(myitem);
                Session[myitem] = list;
            }
            else
                if (ModelState.IsValid)
                {
                    var list = Session[myitem]; // add this list to DB
                    db.Items.Add(myitem);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }

            return View(myitem);
        }
于 2013-09-20T06:37:02.237 回答
0

如果您不想使用会话,另一种选择可能是使用具有唯一键的缓存解决方案。

  • 配置基于 Key-Value 的缓存服务器,例如 memcache、couchbase
  • 您可能需要在项目中使用 enyim.caching 和 memcache.dll
  • 在 web.config 中为缓存服务器添加配置
  • 对于每个唯一的会话交换一个密钥并暂时将您的值保存到密钥中
  • 在确定一切就绪或单击提交后,从缓存中读取所有内容并保存到数据库。

这是一些额外的工作,例如您必须安装缓存服务器并做一些额外的工作。但好处是我会说你会得到闪电般的快速性能。

可能是矫枉过正,但只是想让您知道还有其他选择。如果你正在寻找一个高性能/可扩展的系统,你可以考虑这个。但是对于一个普通的小项目,正如彗星先生所说,会话就足够了。

于 2013-09-20T07:04:17.197 回答