0

C# と SQL Server 2005 を使用して ASP .Net MVC 3 アプリケーションを開発しています。

Entity Framework と Code First Method も使用しています。

フォーム (テキストボックスとリストボックス) を含む部分ビュー 'Gestion.ascx' があります。

このビューは、ViewModel 'FlowViewModel' を使用します。

このビューで、既に持っている別のモデル「Gamme」を使用することを望みます。

両方を「継承マークアップ」に入れようとしましたが、一部のステートメントに赤で下線が引かれました。

実際、質問をさらに説明するには:

この部分ビューで FlowViewModel を使用して、さまざまなモデルからリスト ボックスにデータをロードしました。

ここで、選択して入力した値をローカル変数に保存したいと考えています。

ビュー「Gestion」がモデル「Gamme」を使用していないため、モデル「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; }

    }
}
4

1 に答える 1

1

この "<%: Html.EditorFor(x=>x.YourGammeModel.Nbr_Passage)%>" コードを "<%: Html.Textbox("Nbr_Passage",(Model != null && Model.YourGammeModel != 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"];

}
于 2013-05-20T05:34:00.857 に答える