0

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

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

我有一个从模型视图“FlowModelView”继承的局部视图,因为我正在使用该模型的列表。

我想使用另一个模型“Gamme”的参数。

当我尝试这个时,该语句始终带有红色下划线。

这是部分视图:

<%@  Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.FlowViewModel.Gamme>" %>

<% using (Html.BeginForm()) { %>
    <%: Html.ValidationSummary(true) %>
    <fieldset class="parametrage">
        <legend>Gestion de Gamme</legend>

        <div><%:Html.Label("Poste :")%><%: Html.DropDownList("SelectedPoste", Model.PostesItems)%></div>


         <div><%:Html.Label("Nombre de Passage :")%><%: Html.EditorFor(Model.Gamme=>Model.Gamme.Nbr_Passage) %></div>

        </fieldset>
         <% } %> 

这是 FlowViewModel :

public class FlowViewModel
    {

        [Key]
        public string IDv { get; set; }
        [NotMapped]
        public SelectList PostesItems { get; set; }
        //public List<Poste> PostesItems { get; set; }
        public List<Profile_Ga> Profile_GaItems { get; set; }
        public List<Gamme> GaItems { get; set; }

        public int SelectedProfile_Ga { get; set; }

        public int SelectedGamme{ get; set; }

        public int SelectedPoste { get; set; }
    }

这是游戏模型:

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

    }
and this the controller but contains some errors :


  public class AnouarController : Controller
    {



        //
        // GET: /Anouar/

         public ActionResult Gestion()
         {
            var model = new FlowViewModel()
            { YourGammeModel = new Gamme(){

        public string ID_Gamme { get; set; }

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

            }};

             return PartialView();

         }




    }
4

4 回答 4

1

请在查看页面中使用以下内容进行检查

<%@  Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.FlowViewModel.GaItems>" %>

或者如果您只需要Gamme模型,则必须使用以下

 <%@  Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.Gamme>" %>
于 2013-05-14T09:07:13.577 回答
1

您需要将一个 Gamme 成员添加到您在视图中传递的 FlowViewModel 中,然后使用它。只能将一个模型传递给视图(如果需要,可以使用 ViewBag 传递其他数据)。所以,或者你扩展 FlowViewModel 或者你使用 Gamme 类广告模型到你的视图

@using MvcApplication2.Models.Gamme

或者

public class FlowViewModel
{

    [Key]
    public string IDv { get; set; }
    [NotMapped]
    public SelectList PostesItems { get; set; } 
    public List<Profile_Ga> Profile_GaItems { get; set; }
    public List<Gamme> GaItems { get; set; }
    //here is the gamme member
    public Gamme YourGammeModel {get;set;}

    public int SelectedProfile_Ga { get; set; }

    public int SelectedGamme{ get; set; }

    public int SelectedPoste { get; set; }
}

你初始化模型

var model = new FlowViewModel(){ YourGammeModel = new Gamme(){...}};

并使用 flowviewmodel 内的游戏属性:

<% Model.YourGammeModel.Nbr_Passage %>
于 2013-05-14T09:08:45.380 回答
1

你在这一行的问题:

<div><%:Html.Label("Nombre de Passage :")%><%: Html.EditorFor(Model.Gamme=>Model.Gamme.Nbr_Passage) %></div>

你写了 lambda 表达式Model.Gamme=>Model.Gamme.Nbr_Passage,但应该写g=>g.Nbr_Passageg 的类型Gamme

并将视图类型更改为:

<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.Ga‌​mme>" %>
于 2013-05-14T09:11:04.513 回答
1

根据您昨天发送给我的代码,您将 Gestion 渲染为另一个视图中的部分,因此实际上并未触发此控制器操作。你需要改变Index.aspx它说的地方

Html.RenderPartial("Gestion")

Html.RenderAction("Gestion", "Anouar", Model)

并将控制器操作更改为:

public ActionResult Gestion(FlowViewModel model)
{
    model.YourGammeModel = new Gamme();

    return PartialView(model);
 }
于 2013-05-14T13:22:29.417 回答