2010-11-17 2 views
1

Я новичок в ASP.Net MVC и задаю вопрос о форме ввода основной детали.Основная информация ASP.Net MVC

В моей базе данных есть таблица для детей с внешними ключевыми отношениями с врачом, иммунизацией и родительским столом. Я использовал Linq для SQL для создания моей модели.

Я создал контроллер и посмотрел на Ребенка. Пользователь придет в форму и отправит все сразу - Ребенка, информацию о враче, одном или многих родителях и одной или нескольких вакцинах.

Я не уверен, как подойти к этому. Нужен ли мне контроллер для вакцинации, родителей и т. Д.?

Моя предварительно приложение MVC просто взял все от веб-формы и заселены все

ответ

0

Я обычно имеют один контроллер, который поддерживает несколько видов (добавлять, редактировать, удалять и т.д.). Я прочитал из своей базы данных модель, в которой есть поля для каждой части данных, которые вы хотите видеть. Затем вы передаете модель в представление, чтобы она могла ее отобразить.

После того, как форма будет отправлена, вы получите модель от нее в качестве параметра для контроллера. Затем вы обновляете базу данных по мере необходимости.

Вот код. Я не пытался скомпилировать его, чтобы ваш пробег мог меняться.

public class ParentModel 
    { 
     // Parent fields 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 

     IList<ChildModel> Children { get; set; } 
    } 

    public class ChildModel 
    { 
     // Child fields 
     public int Age { get; set; } 
    } 


    public ActionResult MyAction() 
    { 
     // Grab a model with the children property filled out 
     ParentModel myModel = GetFromDatabase(); 

     return View("MyView", myModel); 
    } 

Вид (сокращенно):

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<ParentModel>" %> 

. 
. 
. 


<% using (Html.BeginForm("MyAction", "MyController", FormMethod.Post)) %> 
<% {%> 
     <%= Html.ValidationSummary(true) %> 

     <table> 
      <tr valign="top"> 
       <td> 
        <%:Html.LabelFor(a => a.FirstName)%>: 
       </td> 
       <td> 
        <%:Html.EditorFor(a => a.FirstName)%> 
        <%:Html.ValidationMessageFor(a => a.FirstName)%> 
       </td> 
      </tr> 
      <tr valign="top"> 
       <td> 
        <%:Html.LabelFor(a => a.LastName)%>: 
       </td> 
       <td> 
        <%:Html.EditorFor(a => a.LastName)%> 
        <%:Html.ValidationMessageFor(a => a.LastName)%> 
       </td> 
      </tr> 
     </table> 

     . 
     . 
     . 

    <%} %> 
+0

Спасибо за отвечая. Также вы предполагаете, что если модель подверглась воздействию Ребенка и списка родителей, списка прививок и т. д., то представление будет автоматически правильно распределено. Я не думаю, что я тебя правильно понял. –

+0

Вам нужно создать представление, в котором есть соответствующие помощники Html. См. Мой пример выше. – rboarman

0

Вам нужны только основные контроллеры. Хитрость для редактирования списка думает (объекты ребенка) объясняются в this haacked post

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

<% for (int i = 0; i < 3; i++) { %> 

    <%: Html.TextBoxFor(m => m[i].Title) %> 
    <%: Html.TextBoxFor(m => m[i].Author) %> 
    <%: Html.TextBoxFor(m => m[i].DatePublished) %> 

<% } %> 
Смежные вопросы