как передать entitykey (ссылку) из представления в контроллер - PullRequest
0 голосов
/ 01 июня 2009

У меня была рабочая страница с linq to sql, и сейчас я конвертирую ее в linq в entity

Мой тестовый проект содержит 2 таблицы: контакт (идентификатор, имя, адрес электронной почты) и комментарии (идентификатор, контакт, комментарий)

когда я хочу создать новый комментарий, я кладу в скрытом поле контакт и он отправлялся вместе со всем остальным на кнопку отправки

он работал нормально с linq2sql, но не работает с linq2entity

как это сделать с linq2entity?

edit # 1

на самом деле вопрос в том, как мне обращаться с одним или несколькими внешними ключами? в этом случае я получил только один, и да, я мог бы использовать предложение от eu-ge-ne но что, если я получу второй?

edit # 2

нашел это решение на данный момент

1 Ответ

1 голос
/ 01 июня 2009

Лучше указывать 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"]

    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...