0

アップロードする Excel ファイルの行数に基づいて動的に生成するフォームがあります。説明の文字列を調べて、動的に生成されたドロップダウンリストを説明のテキストに基づいて指定された値に設定するロジックをどこに追加できますか? 次のようなチェックのリストを追加したい: 「blabla」が説明文字列にある場合は、ドロップダウンリストの値を 4 に設定します。

Javascriptでこれを行う必要がありますか? それは私にはそれほどきれいに感じられないからです。ビジネス ロジックをコントローラーで処理したいのですが、この設計でそれがどのようになるかわかりません。

私のコードは次のようになります。

プレビュー ページは、基本的に、Transaction という名前のエディター テンプレートにリンクするだけです。

@using (Html.BeginForm("Preview", "Import", FormMethod.Post))
{
    <table border="1" style="border-color: #FFFFFF">
    @Html.EditorFor(m => m.Transactions, new { Categories = Model.Categories })
    </table>
    <input id="btnSave" type="submit" value="Opslaan in database" />
}

このエディター テンプレート トランザクションでは、いくつかの静的データ、および以前に別のページにアップロードした Excel の各行のテキスト ボックスとドロップダウン リストを表示します。

<tr>
    <td style="width: 40px; padding: 5px; background-color: @CurrencyHelper.GetCurrencyColor(Model.Amount)" align="right" nowrap="nowrap">@Html.Raw(CurrencyHelper.GetCurrency(Model.Currency, Model.Amount))
    </td>
    <td style="white-space: nowrap; padding: 5px;">@Model.DateTime.ToString("dd-MM-yyyy")
    </td>
    <td style="padding: 5px;">@Model.Description
    </td>
    <td style="padding: 5px;">@Html.EditorFor(m => m.ShortDescription)
    </td>
    <td style="padding: 5px;">@Html.DropDownListFor(m => m.CategoryId, new SelectList(ViewData["Categories"] as IEnumerable<Category>, "CategoryId", "Name"))
    </td>
</tr>

ビューモデルにデータを入力するコントローラー:

//Attach unique Transactions and Categories to ViewModel
var viewModel = new ImportViewModel()
{
     Transactions = uniqueTransactions.ToList(),
     Categories = categoryRepository.GetCategories().OrderBy(c => c.Name).ToList()
};
4

1 に答える 1

0

静的バインディング

public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "Welcome to the Training Courses...";
            List objcourses = new List();
            objcourses.Add("Asp.Net");
            objcourses.Add("MVC");
            objcourses.Add("WCF");
            objcourses.Add("WPF");
            objcourses.Add("C#.Net");
            ViewBag.Courses = new SelectList(objcourses);
            return View();
        }
    }

@{
ViewBag.Title = "Home Page";
}
Index
@using(@Html.BeginForm(“Index”,”Home”,FormMethod.Get)) {
Courses List; @Html.DropDownList(“Courses“)
}

動的バインディング

public class HomeController : Controller
    {
        public ActionResult Index()
        {
            private MovieDBContext db = new MovieDBContext();
            var GenreLst = new List();
            var GenreQry = from d in db.Movies
                           orderby d.Genre
                           select d.Genre;
            GenreLst.AddRange(GenreQry.Distinct());
            ViewBag.Courses = new SelectList(GenreLst);
            return View();
        }
    }
@{
    ViewBag.Title = "Home Page";
}
Index

@using(@Html.BeginForm("Index","Home",FormMethod.Get)) {

Courses List; @Html.DropDownList("Courses")
}
于 2012-06-05T14:50:03.270 に答える