私は入力するチェックボックスリストを持っていますが、おそらく私はpage_loadを使用してそこからジョブを行うことができますか?Webフォームモデルバインディングロード時にCheckBoxListがあらかじめ選択されています
protected void Page_Load(object sender, EventArgs e)
{
//...
var query = logic.GetPlanCoverages(planName);
cbl_MemberCoverages.DataSource = coverages;
cbl_MemberCoverages.DataBind();
}
しかしAsp.Netは結合モデルを導入していますので、今、私はこのことができます:
<asp:CheckBoxList runat="server" ID="cbl_MemberCoverages"
SelectMethod="BindMemberCoverages" DataTextField="CoverageName" DataValueField="CoverageCode">
</asp:CheckBoxList>
そして、コードビハインドで:
public IEnumerable<PlanCoveragesDomainModel> BindMemberCoverages()
{
var planName = logic.GetShortPlanName();
var query = logic.GetPlanCoverages(planName);
return query;
}
しかし... ...ありますがModel Bindingでまだ好きではないもの、またはフォームをあらかじめ用意しておく必要があるときに、正しく使用する方法を理解できないものがあります。
一般的なシナリオは、ユーザーのリストから編集する場合です。私は新しいページを開き、多くのフィールドを持つこのフォームを作成します。おそらく、ユーザーの1人は、すでにこれらのカバレッジのいくつかを割り当てています。しかし、現時点では、私が見つけた唯一の回避策は次のとおりです。
public IEnumerable<PlanCoveragesDomainModel> BindMemberCoverages([QueryString]string mode)
{
if (!"edit".Equals(mode, StringComparison.InvariantCultureIgnoreCase))
{
var planName = logic.GetShortPlanName();
var query = logic.GetPlanCoverages(planName);
return query;
}
var coverages = logic.GetPlanCoverages(CurrentModel.PlanName).Select(c => new ListItem(c.CoverageName, c.CoverageCode)).ToArray();
cbl_MemberCoverages.Items.AddRange(coverages);
cbl_MemberCoverages.DataSource = coverages;
cbl_MemberCoverages.DataBind();
foreach (ListItem listItem in cbl_MemberCoverages.Items)
{
listItem.Selected = CurrentModel.Coverages.Any(c => c.Value == listItem.Value);
}
return null;
}
みんな?
あなたは、モデルが結合して、ユーザーを編集しますが、別のユーザーの値は、フォームで事前に持っていたいですか?これは最初のモデルバインドの考え方に反しているようですが、コントロールにバインドする前にユーザーオブジェクトのデータを事前に準備する方が簡単かもしれません。 – Seano666
私が理解しているかどうかを見てみましょう。「編集」をクリックして編集ページに行くと、ナビゲーションページで選択された「MemberCoverage」を編集ページで選択して表示しますか? –
[Henryk Budzinski]まさに私が意味していたもの: –