我基本上是在我的数据输入视图上显示一个下拉列表,下拉列表一直给我错误“表达式树可能不包含动态操作”。我已将“@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>
感谢您的帮助。
答案 0 :(得分: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
类。