我正在使用C#和SQL Server 2005开发ASP .Net MVC 3应用程序。
我也在使用Entity Framework和Code First Method。
我有一个部分视图,它继承自模型视图' 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; }
}
这就是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; }
}
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();
}
}
答案 0 :(得分:1)
请在视图页面中使用以下内容进行检查
<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.FlowViewModel.GaItems>" %>
或者如果您只需要Gamme
型号,则必须使用以下
<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.Gamme>" %>
答案 1 :(得分: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中的gamme属性:
<% Model.YourGammeModel.Nbr_Passage %>
答案 2 :(得分: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_Passage
,其中g的类型为Gamme
并将视图类型更改为:
<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.Gamme>" %>
答案 3 :(得分:1)
根据您昨天发给我的代码,您将Gestion渲染为另一个视图中的部分代码,因此该控制器操作实际上并未实现。您需要更改Index.aspx
所在的位置
Html.RenderPartial("Gestion")
到
Html.RenderAction("Gestion", "Anouar", Model)
并将控制器操作更改为:
public ActionResult Gestion(FlowViewModel model)
{
model.YourGammeModel = new Gamme();
return PartialView(model);
}