Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过多个表单帖子持久化数据_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 通过多个表单帖子持久化数据

C# 通过多个表单帖子持久化数据,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我想知道在ASP.NET MVC中解决这个问题的最佳方法是什么。以下是我希望能够做到的一个简单示例: 我有一个带有文本框和提交按钮的网页。当按下提交按钮时,我希望内容显示在同一网页上。当再次按下时,我希望显示第一次提交时已经显示的内容以及刚刚提交的新数据 我曾尝试将此数据保存到模型中,但每次表单发布时,模型都会被清除。我怎样才能做到这一点,并在最后一篇文章(以及之前的文章)之前保留文章中的数据呢?只需为模型属性放置一个隐藏字段,然后将预览值加载到其中,并将其传递回下一篇文章 示例:@Html.H

我想知道在ASP.NET MVC中解决这个问题的最佳方法是什么。以下是我希望能够做到的一个简单示例:

我有一个带有文本框和提交按钮的网页。当按下提交按钮时,我希望内容显示在同一网页上。当再次按下时,我希望显示第一次提交时已经显示的内容以及刚刚提交的新数据


我曾尝试将此数据保存到模型中,但每次表单发布时,模型都会被清除。我怎样才能做到这一点,并在最后一篇文章(以及之前的文章)之前保留文章中的数据呢?

只需为模型属性放置一个隐藏字段,然后将预览值加载到其中,并将其传递回下一篇文章

示例:
@Html.HiddenFor(model=>model.YourProperty)

所以知道可以有两个属性,例如:一个名为newValue,另一个名为allValues

与隐藏字段一起使用的AllValue以及用于插入新字段的newValue。所以在post中,您只需将newValue添加到allValues

诸如此类: model.allValues+=newValue

--更新

或者您可以使用@Jesse提到的会话或临时数据


对于这种情况,我更喜欢使用隐藏字段,因为它具有较低的复杂性,并且它的数据不需要安全,因为它将显示给用户。

如果您希望数据在请求之间保持不变,作为起点,我将使用“TempData”。TempData属性值存储在会话状态中,并一直存在,直到读取或会话过期

视图模型示例:

    public class SomeClass
    {
        public string Something { get; set; }
        public List<string> RetainedValues { get; set; } 
    }
公共类SomeClass
{
公共字符串Something{get;set;}
公共列表保留值{get;set;}
}
控制器示例:

    [HttpGet]
    public ActionResult Index()
    {
        return View("Index");
    }

    [HttpPost]
    public ActionResult Index(SomeClass postedValues)
    {
        // retrieve retained values
        var retained = (List<string>) TempData["RetainedValues"] ?? new List<string>();
        retained.Add(postedValues.Something);

        // save for next post
        TempData["RetainedValues"] = retained;

        // setup viewmodel
        var model = new SomeClass
        {
            RetainedValues = retained
        };

        return View("Index", model);
    }
[HttpGet]
公共行动结果索引()
{
返回视图(“索引”);
}
[HttpPost]
公共操作结果索引(SomeClass postedValues)
{
//检索保留值
保留变量=(列表)临时数据[“保留值”]??新列表();
保留。添加(postedValues.Something);
//为下一篇文章保存
TempData[“RetainedValues”]=保留;
//设置视图模型
var模型=新类
{
保留值=保留值
};
返回视图(“索引”,模型);
}
示例视图(强类型):


@foreach(模型中的var项目。保留值)
{
@项目
}
@使用(Html.BeginForm())
{
@EditorFor(m=>m.Something)
}
    <div>
        @foreach(var item in Model.RetainedValues)
        {
            <div>@item</div>
        }
    </div>
    @using(Html.BeginForm())
    {
        @Html.EditorFor(m=>m.Something)
        <input type="submit"/>
    }