1

ドロップダウンに保存された値を選択した値として表示したい。MVCでこれを行う方法がわかりません。

私のコードは

<%: Html.DropDownList("basic-qualification-container" + i.ToString(), 
         new SelectList((IEnumerable<Dial4Jobz.Models.Degree>)ViewData["CandidateBasicQualifications"], "Id", "Name", (IEnumerable<int>)ViewData["BasicQualificationDegrees"]), 
         new { @class = "qualification" })%> 

ドロップダウンからいくつかのオプションを選択して送信します。ページをロードすると、最後に保存された値が表示されます。これは私の問題です。

4

2 に答える 2

1

selectedValue パラメータに間違った値を送信している可能性があります。SelectList コンストラクターで値を設定する必要があります。

<%: Html.DropDownList("basic-qualification-container" + i.ToString(), 
         new SelectList((IEnumerable<Dial4Jobz.Models.Degree>)ViewData["CandidateBasicQualifications"],
                        "Id", 
                        "Name",
                        ViewData["selectedValue"]), //set selected value here
         new { @class = "qualification" })%> 

より良い方法は、ViewData 内のすべてのデータをモデルに配置し、それをビューに強く型付けすることです。

モデルを定義する方法は次のとおりです。

public class SampleModel
{
    private string SelectedOption { get; set; }
    private IEnumerable<SelectListItem> Options { get; set; }
}

次に、アクション メソッドで値を指定します。

public ActionResult Index()
{
    //get data from db
    SampleModel model = new SampleModel
                            {
                                SelectedOption = selectedOption,
                                Options = new SelectList(options, "Id", "Name")
                            };
    return View(model);
}

ビューを SampleModel に強く入力した後、ビューで Html.DropDownListFor ヘルパーを使用できます。

<%: Html.DropDownListFor(model => model.SelectedOption,
                         Model.Options,
                         new { @class = "qualification" }) %>
于 2012-10-10T12:16:40.630 に答える
0

SomeAction ビューの DropDownList ヘルパー

Html.DropDownList(
    string name,
    IEnumerable<SelectListItem> selectList,
    ViewData["lastSelected"],  // String Selected Option
    object htmlAttributes) 

以下のようにviewDataで選択した値を表示できます。

コントローラ

// Set Default selected
public ActionResult SomeAction()
{
    ViewData["lastSelected"] = "Default Text";
    return View();
}

投稿後、選択した値に表示されるviewDataを再度設定する必要があります。

// Set selected value after posting
[HttpPost]
public ActionResult SomeAction()
{
    .....
    ViewData["lastSelected"] = "Changed Text (selected value)";
    return View();
}
于 2012-10-10T12:10:44.130 に答える