我有一個從數據庫返回結果的小型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