1

我正在使用 C# 和 SQL Server 2005 开发一个 ASP .Net MVC 3 应用程序。

我也在使用实体框架和代码优先方法。

我想在我的基地中的表“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取自代码为的视图索引

<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);
}
4

1 回答 1

2

如果没有看到确切的代码,很难知道您是如何加载部分页面等的。该按钮不会做任何事情,因为没有与之相关的操作。如果您将其更改为提交,那么它将触发与主视图相同的控制器HttpPost

从那里开始,我认为问题是因为您的HttpPost操作没有正确命名或接受正确的参数。在您的示例中,您应该只使用相同的操作名称和 ViewModel ,HttpGet因此HttpPost您可能想要这样的东西:

假设您的视图名为 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 ( Gestion.ascx ) 上,您需要将按钮更改为如下所示:<input type="submit" value="Enregistrer" />

最后,如果您希望提交按钮位于主视图以外的其他位置,则需要更改Html.BeginForm代码。因此,假设您ExampleSave在控制器AnouarController上有一个名为的操作,您可以这样做:

<% using (Html.BeginForm("ExampleSave", "Anouar"))
于 2013-05-16T09:29:35.163 回答