C# 如何在ASP MVC 3中保存列表中的值
我正在使用C#和SQLServer2005开发一个ASP.NETMVC3应用程序 我还使用实体框架和代码优先方法 我在局部视图中有一个表单,其代码为:C# 如何在ASP MVC 3中保存列表中的值,c#,visual-studio-2010,asp.net-mvc-3,entity-framework,C#,Visual Studio 2010,Asp.net Mvc 3,Entity Framework,我正在使用C#和SQLServer2005开发一个ASP.NETMVC3应用程序 我还使用实体框架和代码优先方法 我在局部视图中有一个表单,其代码为: <%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.FlowViewModel>" %> <% using (Html.BeginForm("Save", "ProfileGa")) { %>
<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.FlowViewModel>" %>
<% using (Html.BeginForm("Save", "ProfileGa")) { %>
<%: Html.ValidationSummary(true) %>
<fieldset class="parametrage">
<legend>Gestion de Gamme</legend>
<div>
<%:Html.Label("Poste :")%><%: Html.DropDownListFor(model => model.SelectedPoste, Model.PostesItems)%>
</div>
<div>
<%:Html.Label("Nombre de Passage :")%><%: Html.EditorFor(model=>model.Nbr_Passage)%>
</div>
<div class="editor-field">
<%: Html.ValidationMessageFor(model => model.Nbr_Passage)%>
</div>
<div>
<%:Html.Label("Position :")%><%: Html.EditorFor(model=>model.Position)%>
</div>
<div>
<%:Html.Label("Poste Suivant :")%><%: Html.DropDownListFor(model => model.PosteSuivantSelected, Model.PostesItems, new { @id = "dd" })%>
</div>
<div>
<input type="submit" value="Enregistrer" id="btnSave" />
</div>
</fieldset>
问题:
每次我在列表中保存时,th值都会被删除并替换为新值
对于列表,我始终使用count=1:
[HttpPost]
public ActionResult Save(FlowViewModel model)
{
if (ModelState.IsValid)
{
Gamme G = new Gamme();
G.ID_Gamme = model.SelectedProfile_Ga;
G.ID_Poste = model.SelectedPoste;
G.Next_Posts = model.PosteSuivantSelected;
G.Nbr_Passage = int.Parse(model.Nbr_Passage);
G.Position = int.Parse(model.Position);
model.ListG.Add(G);
}
return RedirectToAction("Index");
}
列表中始终有1个,因为您正在使用new list()创建ListG的新实例;因此,当这被传递回控制器时,它将被更新,并且您将添加新的G对象,从而导致计数为1。或者,您可以尝试这样做:(假设您的db实例可以在本地访问)
我不知道你为什么需要这份清单。
模型
仅在此控制器操作期间存在,您不会将其传递给视图。在您的代码中,您正在创建一个新的Gamme
,将其添加到列表中,然后将整个内容扔掉。如果您只是想在数据库中保存一个新的Gamme
,那么如果您这样做了,它是否不起作用
db.Gammes.Add(G);
db.SaveChanges();
而不是
model.ListG.Add(G);
这份名单的目的是什么
进一步澄清后编辑:
似乎您希望在一个会话中添加一个临时的Gamme
项目列表,因此您可以使用会话变量来存储您当时添加的Gamme列表。在控制器中初始化并添加保存操作,如下所示:
((List<Gamme>)System.Web.HttpContext.Current.Session["GammeList"]).Add(G);
((List)System.Web.HttpContext.Current.Session[“GammeList”])。添加(G);
然后,如果要将其指定给视图模型的参数,则如下所示:
model.ListG = (List<Gamme>)System.Web.HttpContext.Current.Session["GammeList"];
model.ListG=(List)System.Web.HttpContext.Current.Session[“GammeList”];
一、 就我个人而言,我会回去做一些稍微不同的设计。我会在
Gamme
上放置一个bool
,称为“已处理”或类似的东西,当您创建它们时,将其设置为false
。这样,您可以通过选择处理为false的所有Gamme
对象来获得相同的列表,而不是使用会话变量列表 谢谢你的回答,但结果是一样的,我的朋友!数据库中当前保留了多少个Gammes?另外,您是否尝试过将视图模型上的属性更改为使用普通的getter和setter:public List ListG{get;set;}我尝试过,,,这将是Null异常,大约有多少个Gammes,我不知道我的答案是否正确,但ListG的计数变成了6个答案的hanks,这是我的第一个方法:直接保存在基中,我成功地保存了,但现在他们建议我先保存在列表中,因为我需要在记录之前做一些测试操作。你需要测试什么?只有新的Gamme,或包括新Gamme在内的所有Gamme的列表。新Gamme的列表,但每个都取决于其他Gamme。但是,您一次只创建一个新Gamme,列表的其余部分来自何处?开始时列表为空,然后每次单击,我添加新Gamme。最后,我测试了它们之间的依赖关系,如果可以的话,我会将所有列表记录在数据库中。
((List<Gamme>)System.Web.HttpContext.Current.Session["GammeList"]).Add(G);
model.ListG = (List<Gamme>)System.Web.HttpContext.Current.Session["GammeList"];