1

ビューに渡す文字列のリスト内の各項目に対して DropDownList を動的に生成し、いくつかの標準オプションのドロップダウンリストを生成します。ドロップダウンリスト名は文字「drp」+ viewdata を介してビューに渡された文字列項目です。私が直面している問題は、アイテムの名前と数が異なるため、ビューの HttpPost の個々のドロップダウン リストにアクセスする方法がわからないことです。

ここに私のビューのコードを取得します:

public ActionResult ModMapping()
        {

            ViewData["mods"] = TempData["mods"];
            return View();
        }

これが私のビュー生成です:

<% using (Html.BeginForm()) { %>

<h2>Modifier Needing Mapping</h2>
<p>Please Choose for each modifier listed below what type of fee it is.  There is an ingore option if it is not a gloabl fee modifier, professional fee modifier, or technical fee modifier.</p>
<table>
    <tr>
        <th>Modifier</th>
        <th>Mapping Options</th>
    </tr>
        <% int i; 
           i=0;
           var modsList = ViewData["mods"] as List<String>;%>

        <% foreach (String item in modsList) { %>
            <% i++; %>
            <tr>
                <td>
                    <%: Html.Label("lbl" + item, item) %>
                </td>
                <td>
                    <%: Html.DropDownList("drp" + item, new SelectList(
                  new List<Object>{ 
                       new { value = "NotSelected" , text = "<-- Select Modifier Type -->"},
                       new { value = "Global" , text = "Global Fee" },
                       new { value = "Professional" , text = "Professional Fee"},
                       new { value = "Technical", text = "Technical Fee"},
                       new { value = "Ingore", text="Ingore This Modifier"}
                    },
                  "value",
                  "text",
                  "NotSelected")) %>
                </td>
            </tr>
        <% } %>
</table>
 <input type="submit" value="Done" />
<% } %></code>
4

1 に答える 1

0

ビューにモデルを使用する場合、MVC はすべてのドロップダウン リストをモデルに自動的にマップするため、これは非常に簡単です。

モデルを本当に使用したくない場合は、次のような形式で値にアクセスできます

// Load your modsList here.
foreach (String item in modsList)
{
   var dropDownValue = Request["drp" + item];
}

もう 1 つのオプションは、FormCollection を受け入れるコントローラー関数を作成することです。これは、POST 内のすべての値の単純な辞書です。

[HttpPost]
public ActionResult ModMapping(FormCollection formCollection)
{
    // Load your modsList here.
    foreach (String item in modsList)
    {
       var dropDownValue = formCollection["drp" + item];
    }
}

ページと要件がどのように見えるかに応じて、物事を単純化し、「drp」で始まるアイテムを探して FormCollection をループするだけでよいでしょう。

于 2013-04-09T18:04:19.383 に答える