現在MVCのWebサイトで作業していますが、DropDownListForで値が選択されるたびにDropDownListForで部分ビューを作成しました.HttpPostに移動して値を追加します。リスト。私はまた、このリストにバインドされているListBoxForを持っています。私が達成したい何MVC更新ListboxFor DropDownListForから選択した値で
:新しい値を持つリストに追加され
毎回DropDownListFor選択した値がこのリストボックスに追加されますので、それが自動的にListBoxForを更新する必要があります。私はこれを達成するための最良の方法が何であるのだろうか。
コード:
Submit.cshtml:
<div class="create-ingredient">
@Html.Partial("_CreateIngredient")
</div>
<br/>
<div class="add-ingredient">
@Html.Partial("_AddIngredient")
</div>
<br/>
<div class="ingredient-listbox">
@Html.LabelFor(model => model.Ingredients,"Current Ingredients")
@Html.ListBoxFor(model => model.Ingredients, new MultiSelectList(Model.SelectedIngredients), new { style = "width:50%;" })
</div>
_AddIngredient.cshtml(一部):
@model Recepten.Models.IngredientSelectModel
@using (Ajax.BeginForm("AddIngredient", "Recipe", new AjaxOptions() { UpdateTargetId = "add-ingredient", HttpMethod = "Post" }))
{
@Html.LabelFor(model => model.Ingredients, "Add Ingredient")
@Html.DropDownListFor(model => model.SelectedIngredient, Model.Ingredients, "Select Ingredient", new { @onchange = "$(this).parents('form').submit();" })
}
AddIngredient:
[HttpPost]
public ActionResult AddIngredient(IngredientSelectModel ing)
{
ing.SelectedIngredients.Add(ing.SelectedIngredient);
return PartialView(ing);
}
IngredientSelectModel:
public RecipeModel Recipe { get; set; }
public IEnumerable<SelectListItem> Ingredients { get; set; }
public int SelectedIngredient { get; set; }
public string addIngredient { get; set; }
public List<int> SelectedIngredients { get; set; }
public IngredientSelectModel()
{
SelectedIngredients = new List<int>();
}
ありがとうございました!
これとJavaScriptとの関係は何ですか? – evolutionxbox
私は本当にjavascriptに精通していませんが、listboxforを更新するためにdropdownlistforにonclickイベントがある場合、イベントを作成することは可能だと思います。これについてわからないので、タグを削除しました – josephzigler
javascriptが必要ですドロップダウンリストの変更イベントを処理し、選択したオプションを複製してリストボックスに追加します。ただし、提出する前に各オプションが選択されていない限り、必ずしも「成分」の値を返送するわけではありません。あなたがこれで達成しようとしていることを理解するのは難しいです。レシピにいくつかの成分を選択したい場合は、これを行う方法ではありません。関連するチェックボックスを使用してすべての成分を表示する必要があります。 –