1

基本的に、データ入力ビューにドロップダウンリストを表示しようとしていますが、ドロップダウンリストに「式ツリーには動的操作が含まれていない可能性があります」というエラーが表示され続けます。ビューの先頭に「@Model MyModel」を追加しましたが、まだこのエラーを回避できません。この問題を解決する方法を知っている人はいますか? 私はこのようなコントローラーを持っています

using MvcApplication1.Models;


namespace MvcApplication1.Controllers
{
    public class MyController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult EnterInfo()
        {
            GetUT myGetUT = new GetUT();
            ViewBag.uts = GetOptions();
            return View(myGetUT);
        }

        [HttpPost]
        public ActionResult EnterInfo(GetUT myGetUT)
        {
            ViewBag.uts = GetOptions();
            return View(myGetUT);
        }

        private List<UT> GetOptions()
        {
            List<UT> uts = new List<UT>();
            uts.Add(new UT() { ID = 1, Name = "1st" });
            uts.Add(new UT() { ID = 2, Name = "2nd" });
            uts.Add(new UT() { ID = 3, Name = "3rd" });
            uts.Add(new UT() { ID = 4, Name = "4th" });

            return uts;
        }

    }
}

そして次のようなビュー

@Model MyModel

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <title>EnterInfo</title>
</head>
<body>
    <div>

        @Html.DropDownListFor(x => x.UTID, new SelectList(ViewBag.uts, "ID", "Name", Model.UTID))
        Enter an Amount :-<input type="text" name="Amount" /><br />
        <input type="submit" value="Submit Info" />

    </div>
</body>
</html>

すべての助けをありがとう。

4

1 に答える 1

0

まあ、ViewBag は動的な型なので、それが問題だと思います。public List<UT> UTs { get; set; }プロパティとして配置して、モデルのUTsMyModelプロパティを使用するようにヘルパーを変更してみてください。このような:

コントローラ:

public ActionResult EnterInfo()
{
    GetUT myGetUT = new GetUT();
    myGetUT.UTs = GetOptions();
    return View(myGetUT);
}

意見:

@Html.DropDownListFor(x => x.UTID, 
    new SelectList(Model.UTs, "ID", "Name", Model.UTID))`

編集: 明らかでない場合は、ビューを GetUT タイプに入力する必要があります (これは、EnterInfo アクションで View() 関数に渡すものであるため) - あなたが言ったときの意味はそれだと思います@Model MyModel。そうでない場合は、変更してクラス@Model GetUTにプロパティを配置します。GetUT

于 2012-12-27T19:48:08.360 に答える