在List類型的視圖中,我試圖從視圖中將項目的id(這是一個電子郵件)傳遞給控制器中的actionResult:我使用以下代碼():從剃刀視圖傳遞一個ID到控制器
@Html.ActionLink("Contact", "CreateMessage", "Member", new { id = item.eMail })
我得到一個空引用,因爲傳遞的id爲null。
下面是其工作得很好,並在它的id是不是空的觀點:
@model IEnumerable<Mutuelle.Domain.Entities.Adherent>
@{
ViewBag.Title = "lister";
}
<h2>Liste des adhérents</h2>
<table class="table">
<tr>
<body style="overflow:scroll;">
<th>
@Html.DisplayNameFor(model => model.dateOfBirth)
</th>
<th>
@Html.DisplayNameFor(model => model.address)
</th>
<th>
@Html.DisplayNameFor(model => model.phoneNumber)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.dateOfBirth)
</td>
<td>
@Html.DisplayFor(modelItem => item.address)
</td>
<td>
@Html.DisplayFor(modelItem => item.phoneNumber)
</td>
<td>
@Html.ActionLink("Contacter", "CreateMessage", "MembreComite", new { id = item.eMail })
</td>
</tr>
}
</table>
這裏的控制器:
public ActionResult CreateMessage(string id)
{
Message message = new Message();
return View(message);
}
[HttpPost]
public ActionResult CreateMessage(Message message, string id)
{
if (ModelState.IsValid)
{
AMDMService service = new AMDMService();
Member member = service.GetMemberByeMail(id);
message.member = member;
message.adherentId = id;
member.listMessages.Add(message);
return RedirectToAction("listeMessages");
}
return View(message);
}
其中exacly錯誤是什麼? –
這是引起空引用錯誤的行(不能將值NULL插入到列adherentId中):'message.adherentId = id;'因爲從視圖傳遞的ID是NULL – Bellatrix
這是表單POST提交嗎?表格的其餘部分在哪裏?使用瀏覽器的網絡監視器觀看請求 - 請求主體是什麼樣的?它與您的動作簽名相匹配嗎?另外,發送收藏時的「foreach」很少能一起工作。改用'for'循環。請參閱[這裏](http://stackoverflow.com/questions/16501118/asp-net-mvc-3-c-sharp-post-array-of-variables)。 – Jasen