我有一个从数据库返回结果的小型serach框。这工作正常。结果显示在“列表”页面中并正确显示。但是,我需要将选定的对象传递给我的控制器。当我调试它时,我得到NULL值,并且有一个空的结果页面。 这里是模型:MVC从列表视图页面传递所选对象
public class CodeSnip
{
public short Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Code { get; set; }
public LangType Language { get; set; }
public string Creator { get; set; }
}
public class ListOfCodeSnips : List<CodeSnip>
{
public CodeSnip CodeSnip { get; set; }
}
public enum LangType
{
CSharp,
css,
HTML,
JavaScript,
Perl,
PHP,
Python,
Ruby,
SQL,
VB,
XML,
Other
}
这里是控制器方法(其中不执行任何大气压):
[HttpPost]
public ActionResult Display(CodeSnip snip)
{
return View(snip);
}
以下是我有一个图。再次,它的职位只NULLS为对象的值:
@model Models.ListOfCodeSnips
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.CodeSnip.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.CodeSnip.Description)
</th>
<th>
@Html.DisplayNameFor(model => model.CodeSnip.Language)
</th>
<th>
@Html.DisplayNameFor(model => model.CodeSnip.Creator)
</th>
</tr>
@using (Html.BeginForm("Display", "Home", FormMethod.Post))
{
foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.Language)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.Creator)
</td>
<td>
<input type="submit" value ="Display"/>
</td>
</tr>
}
}
</table>
等等,总之,我想要做的就是从视图下所选择的模型项目,并将其传递到我控制器显示方法,但我说,我所得到的都是空值。 我环顾四周,我发现的所有例子都是如何传递对象列表。我试图与这些人一起瞎搞,但什么也没得到。
谢谢你的时间。
如果你没有做任何计算或试图保存/改变数据库的数据库,而只是想显示*他们..为什么使用'HttpPost'请求而不是'HttpGet'请求? –
这种方法有没有优势,如果是的话,我该怎么做?我尝试了一个ActionLink,但仍然无法传递对象 – rigamonk