如何使用ASP MVC和SQL中不同视图的参数将记录添加到表中
本文关键字:参数 记录 添加 视图 ASP 何使用 MVC SQL | 更新日期: 2023-09-27 18:13:56
我正在使用c#和SQL Server 2005开发一个asp.net MVC 3应用程序。
我也使用实体框架和代码第一方法。
我想添加一个记录到表'Gamme'在我的基础。
问题是用来填写表格的参数来自不同的视图。
这是模型Gamme:
namespace MvcApplication2.Models
{
public class Gamme
{
[Key]
[Column(Order = 0)]
[ForeignKey("Profile_Ga")]
public string ID_Gamme { get; set; }
[Key]
[Column(Order = 1)]
[ForeignKey("Poste")]
public string ID_Poste { get; set; }
public int Position { get; set; }
public int Nbr_Passage { get; set; }
public string Last_Posts { get; set; }
public string Next_Posts { get; set; }
public virtual Poste Poste { get; set; }
public virtual Profile_Ga Profile_Ga { get; set; }
}
ID_Gamme取自视图Index,代码为:
<div><%:Html.Label("Gamme :")%><%: Html.DropDownList("SelectedProfile_Ga", new SelectList(Model.Profile_GaItems, "ID_Gamme", "ID_Gamme"))%> <input type="button" value="Configurer" id="btnShowGestion" /></div>
其他参数取自分部视图Gestion.ascx:
<div><%:Html.Label("Poste :")%><%: Html.DropDownList("SelectedPoste", Model.PostesItems)%><input type="checkbox" name="option1" value="Poste Initial" id= "chkMain" onclick="test();"/>Poste Initial<input type="checkbox" name="option2" value="Poste Final" id= "chkFirst" onclick="test2();"/>Poste Final</div>
<div><%:Html.Label("Nombre de Passage :")%><%: Html.EditorFor(x=>x.YourGammeModel.Nbr_Passage)%></div>
<div><%:Html.Label("Position :")%><%: Html.EditorFor(x=>x.YourGammeModel.Position)%></div>
<div><%:Html.Label("Poste Précédent :")%><%: Html.DropDownList("SelectedPoste", Model.PostesItems)%></div>
<div><%:Html.Label("Poste Suivant :")%><%: Html.DropDownList("SelectedPoste", Model.PostesItems)%></div>
<div><input type="button" value="Enregistrer" id="btnSave" /></div>
我试图在我的控制器中创建一个函数Create
,但没有给出正确的结果:
public ActionResult Gestion(FlowViewModel model)
{
model.YourGammeModel = new Gamme();
return PartialView(model);
}
[HttpPost]
public ActionResult Create(Gamme gamme)
{
if (ModelState.IsValid)
{
db.Gammes.Add(gamme);
db.SaveChanges();
return RedirectToAction("Gestion");
}
return View(gamme);
}
没有看到确切的代码,很难知道你是如何加载部分页面等。按钮不会做任何事情,因为没有与它相关联的操作。如果您将其更改为submit,则它将触发与HttpPost
主视图相同的控制器。
从那里开始,我认为问题是因为您的HttpPost
动作没有正确命名或接受正确的参数。在您的示例中,您应该在HttpGet
和HttpPost
中使用相同的操作名称和ViewModel,因此您可能需要这样的内容:
假设主视图名为Index.aspx:
[HttpGet]
public ActionResult Index(FlowViewModel model)
{
// ...
}
[HttpPost]
public ActionResult Index(FlowViewModel model)
{
if (ModelState.IsValid)
{
db.Gammes.Add(model.YourGammeModel);
db.SaveChanges();
// ...
}
// ...
}
然后在你的PartialView ( gesttion .ascx)你需要改变你的按钮像这样:<input type="submit" value="Enregistrer" />
最后,如果你想让你的提交按钮去其他地方而不是主视图,你需要改变你的Html.BeginForm
代码。那么,假设你在控制器上有一个名为ExampleSave
的动作AnouarController你会这样做:
<% using (Html.BeginForm("ExampleSave", "Anouar"))