如何在同一个视图中继承不同的模型
本文关键字:模型 继承 同一个 视图 | 更新日期: 2023-09-27 18:14:12
我正在使用c#和SQL Server 2005开发一个asp.net MVC 3应用程序。
我也使用实体框架和代码第一方法。
我有一个局部视图的问题。
此视图使用ViewModel' FlowViewModel'。
我希望这个视图使用另一个模型'Gamme',我已经有了。
我试着把它们都放在'inherits markup' 中,但是有些语句变成了红色下划线
事实上,为了解释更多的问题:
我在这个部分视图中使用了FlowViewModel,以便在我的列表框中加载来自不同模型的一些数据。
现在我想要存储选中的值,并将其输入到一个局部变量中。
我不能从模型'Gamme'传递到控制器,因为视图'Gestion'没有使用模型'Gamme'。
这是部分视图'Gestion'的代码:
<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.Models.FlowViewModel>" %>
<% using (Html.BeginForm("Save", "Anouar")) { %>
<%: Html.ValidationSummary(true) %>
<fieldset class="parametrage">
<legend>Gestion de Gamme</legend>
<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("PostePrecedentSelected", Model.PostesItems)%></div>
<div><%:Html.Label("Poste Suivant :")%><%: Html.DropDownList("PosteSuivantSelected", Model.PostesItems)%></div>
<div><input type="submit" value="Enregistrer" id="btnSave" /></div>
</fieldset>
<% } %>
,这是模型'FlowViewModel'的代码:
namespace MvcApplication2.Models
{
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; }
public Gamme YourGammeModel { get; set; }
public int SelectedProfile_Ga { get; set; }
public int SelectedGamme{ get; set; }
public int SelectedPoste { get; set; }
public int PostePrecedentSelected { get; set; }
public int PosteSuivantSelected { get; set; }
}
}
这是模型'Gamme':
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; }
}
}
将此"<%: Html.EditorFor(x=>x. yourgammemodel . nbr_passage)%>"代码替换为"& lt; %: Html。文本框("Nbr_Passage",(Model != null &&模型。= null) ?Model.YourGammeModel。Nbr_Passage: 0) %>"
Post方法中包含例如
[HttpPost]
public ActionResult Save (FlowViewModel flowViewModel, FromCollection form)
{
//get value using formcollection
int Nbr_Passage = (int)form["Nbr_Passage"];
}