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; }其作为属性MyModel并更改您的助手以使用模型中的 UTs 属性。像这样:

控制器:

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 回答