Сохранение данных из разных частичных представлений на одном представлении на одной кнопке, отправьте в MVC 3 - PullRequest
2 голосов
/ 19 декабря 2011

у меня есть три класса

  public partial class User
{          
    public string No_ { get; set; }      
    public string LastName { get; set; }   
    public virtual ICollection<Login> Logins { get; set; }  
    public virtual ICollection<Education> Educations { get; set; }
} 
public partial class Education
{
    public string No_ { get; set; }
    public string UserId { get; set; }
    public string Degree { get; set; }
    public string Institution { get; set; }
    public string Percentage { get; set; }
}
public partial class Login
{        
    public string No_ { get; set; }     
    public string UserId { get; set; }       
    public string Username { get; set; }
    public string Password { get; set; }
    public virtual User User { get; set; }
}

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

@{
ViewBag.Title = "Register";
Layout = "~/Views/Shared/BlankLayout.cshtml";
 }
 <h2>
Register</h2>@using (@Html.BeginForm())
{
      @Html.Partial("LoginPartialView")

      @Html.Partial("UserPartialView")

      @Html.Partial("ProfessionPartialView")

      <section>
          <div>
             <button class="reset">Reset</button>
             <button class="submit" name="submit" value="Submit">Submit</button>
          </div>
   </section>
}

Что я хочу, так это когда я нажимаю кнопку «Отправить», все данные из частичных представлений должны попасть в [httppost], где я могу сохранить данные в таблицах «Пользователь», «Образование» и «Логин». как получить данные в контроллер, который имеет http post контроллер, например:

[HttpPost]
    public ActionResult Register(?,?,?)
    {
        context.Logins.Add(LoginObject);
        context.Educations.Add(EducationObject);
        context.Professions.Add(ProfessionObject);
        return View();
    }

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

Я в значительной степени новичок в Mvc 3 Простите меня, если я не вижу смысла, пока спрашиваю. пожалуйста, ведите меня вместе с

1 Ответ

3 голосов
/ 19 декабря 2011

Вместо частичных я бы порекомендовал вам использовать шаблоны редактора. Вот пример того, как вы могли бы написать форму для сохранения объекта User:

@model User
@{
    ViewBag.Title = "Register";
    Layout = "~/Views/Shared/BlankLayout.cshtml";
}
<h2>
Register</h2>
@using (@Html.BeginForm())
{
    @Html.EditorFor(x => x.No_)
    @Html.EditorFor(x => x.LastName)

    @Html.EditorFor(x => x.Logins)
    @Html.EditorFor(x => x.Educations)

    <section>
        <div>
            <button class="reset">Reset</button>
            <button class="submit" name="submit" value="Submit">Submit</button>
        </div>
   </section>
}

, а затем 2 соответствующих шаблона редактора:

~/Views/Shared/EditorTemplates/Login.cshtml

@model Login
... some input fields for the login

~/Views/Shared/EditorTemplates/Education.cshtml:

@model Education
... some input fields for the education

и действие контроллера:

[HttpPost]
public ActionResult Register(User model)
{
    // the model object will be correctly populated from the default model binder
    // here we can save it
    return View(model);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...