ASP.NET MVC, простое создание страницы через сущность родительского и дочернего LINQ2SQL - PullRequest
0 голосов
/ 22 апреля 2009

У меня есть простая структура

Виджет (родительская таблица)

  • id (IDENTITY)

  • название

WidgetChild (дочерняя таблица) -

  • id (внешний ключ для widget.id)
  • содержание

В моем представлении у меня есть одно поле, которое фиксирует заголовок, и другое поле, которое фиксирует значение содержимого.

 <%= Html.TextBox("title") %>

и

 <%= Html.TextBox("content") %>

Как мне подключить контроллер, чтобы сначала вставить новую запись в виджет, а затем вставить запись в WidgetChild? Я не уверен, как это сделать .. передать экземпляр FormCollection, создать экземпляр экземпляра Widget вручную и передать значения? Или я могу использовать UpdateModel () как-то? Я не знаком с тем, как UpdateModel может связывать значения моей формы, особенно если они охватывают несколько таблиц / классов.

Ответы [ 2 ]

1 голос
/ 22 апреля 2009

Вы можете использовать автоматическое связывание модели здесь.

С такой формой:

<%using(Html.BeginForm("Update", "Home")) {%>
    <%=Html.TextBox("widget.Title") %>
    <%=Html.TextBox("childWidget.Content") %>
    <input type="submit" value="Submit" />
    <%} %>

Ваш контроллер может выглядеть так:

public ActionResult Update(Widget widget, WidgetChild childWidget)
{
  // do whatever with the objects here
}

Объекты будут иметь свойства из заполненной там формы (заголовок для виджета и контент для childWidget) - тогда вы сможете связать эти объекты друг с другом и сохранить их в контексте данных linq to sql обычным способом.

0 голосов
/ 22 апреля 2009

Вы должны различать два процесса в соответствии со структурой вашей базы данных. Вы можете использовать шаг мастера. проверьте эту ссылку .

Второй способ - сделать это вручную. Как и на странице отправки, вы получите все данные страницы в методе действия, который принимает глагол post, верно. Теперь вы можете сделать запись в родительской таблице с заполнением обязательных полей, а затем сразу же получить ту же запись, чтобы получить первичный ключ. И, наконец, вы можете ввести данные в дочернюю таблицу, используя идентификатор родительской таблицы.

Тебе не кажется, что этот процесс - головная боль! Лучше добавить дочерний контент в другом представлении, где можно отобразить раскрывающийся список для родительского виджета, а затем добавить контент.

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