我刚刚开始了一个新的MVC项目,但我无法从表单中获取发布结果。
这是我的模型类:
public class User
{
public int id { get; set; }
public string name { get; set; }
}
public class TestModel
{
public List<User> users { get; set; }
public User user { get; set; }
public SelectList listSelection { get; set; }
public TestModel()
{
users = new List<User>()
{
new User() {id = 0, name = "Steven"},
new User() {id = 1, name = "Ian"},
new User() {id = 2, name = "Rich"}
};
listSelection = new SelectList(users, "name", "name");
}
}
这是我的观点类
@model MvcTestApplicaiton.Models.TestModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
@Html.DropDownListFor(x => x.user, @Model.listSelection)
<p>
<input type="submit" value="Submit" />
</p>
}
@if (@Model.user != null)
{
<p>@Model.user.name</p>
}
这是我的控制者:
public class TestModelController : Controller
{
public TestModel model;
//
// GET: /TestModel/
public ActionResult Index()
{
if(model ==null)
model = new TestModel();
return View(model);
}
[HttpPost]
public ActionResult Test(TestModel test)
{
model.user = test.user;
return RedirectToAction("index", "TestModel");
}
}
下拉列表看起来很好但我看不到让ActionResult Test函数运行。我认为它只会与反射结合,但无论出现什么问题,我都看不到它。
答案 0 :(得分:0)
看起来你正在回复索引。使用GET Test()操作方法,或在BeginForm()中指定ACTION参数。
例如,
@using (Html.BeginForm("Test", "TestModel"))
{
@Html.DropDownListFor(x => x.user, @Model.listSelection)
<p>
<input type="submit" value="Submit" />
</p>
}
或者使用名为Test的视图(将index.cshtml重命名为test.cshtml):
public ActionResult Test()
{
if(model ==null)
model = new TestModel();
return View(model);
}
答案 1 :(得分:0)
您的代码中有两个主要错误。
希望这有帮助。