Лучше указывать contactId как часть URL. Например (с маршрутом «По умолчанию»):
public CommentController : Controller
{
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(int id)
{
...
}
}
По вашему мнению:
<% using (Html.BeginForm(new {
controller = "comment",
action = "add",
id = /* commentId from your Model */ })) { %>
...
<% } %>
ОБНОВЛЕНИЕ:
Если у вас есть 2 или более внешних ключей:
S1:
routes.MapRoute("CustomRoute", "{controller}/{action}/{id1}/{id2}",
new { controller = "home", action = "index", id1 = "", id2 = "" });
...
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(int id1, int id2)
{
...
}
...
<% using (Html.BeginForm(new {
controller = "comment",
action = "add",
id1 = /* foreighn key 1 */,
id2 = /* foreighn key 2 */ })) { %>
...
<% } %>
S2:
В представлении:
<% using (Html.BeginForm(new { controller = "comment", action = "add" })) { %>
...
<input id="foreignKeyId1" type="hidden" value="<%= /* foreign key 1 */ %>" />
<input id="foreignKeyId2" type="hidden" value="<%= /* foreign key 2 */ %>" />
...
<input id="foreignKeyIdN" type="hidden" value="<%= /* foreign key N */ %>" />
<% } %>
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(FormCollection form)
{
var foreignKey1 = form["foreignKeyId1"]
var foreignKey2 = form["foreignKeyId2"]
...
var foreignKeyN = form["foreignKeyIdN"]
...
}