Я столкнулся с проблемой при привязке модели с двумя таблицами в одном классе. Форма не является обязательными для модели при отправке ее на контроллер.Связывание двух таблиц в модели - ASP.NET MVC Razor
Модель:
public class BasicProfileModel {
public BasicProfileModel() {
this.user = new User();
this.basicProfile = new BasicProfile();
}
public User user { get; set; }
public BasicProfile basicProfile { get; set; }
}
пользователей и Basic Profile классы две таблицы со следующими свойствами:
public class User {
public string UserId { get; set; }//not null and PK
public string EmailId { get; set; }//no null
public string Salt { get; set; }//not null
public string Password { get; set; }//not null
public string Role { get; set; }//not null
public bool HasCompleteProfile { get; set; }//not null
}
public class BasicProfile {
public string UserId { get; set; }//not null FK
public string FirstName { get; set; }//not null
public string LastName { get; set; }
public string Gender { get; set; }//not null
public int YearOfBirth { get; set; }//not null
public bool IsApprovedByUser { get; set; }//not null
public bool IsApprovedByAdmin { get; set; }//not null
public bool IsActiveByUser { get; set; }//not null
public bool isActiveByAdmin { get; set; }//not null
}
Когда я загрузить вид модели показывает любое значение инициализируется в контроллере (который генерирует вид) или в в верхней части окна просмотра C#. Но когда я отправляю форму, контроллер показывает модель без какой-либо ценности. Когда я создаю контроллеры/представления для одной таблицы, то все отлично работает. Вот код для методов действий контроллера и просмотра.
public ActionResult BasicRegister() {
BasicProfileModel model = new BasicProfileModel();
//any value initialised in model here displays in view elements e.g. text boxes.
return View("BasicRegister", model);
}
[HttpPost]
public ActionResult DoBasicRegister(BasicProfileModel basicProfile) {
return View("BasicRegister", basicProfile);
}
// Это вид
@model BasicProfileModel
@using (Html.BeginRouteForm("DoBasicRegister", FormMethod.Post)) {
<div>
@Html.TextBoxFor(m => m.user.EmailId)
</div>
<div>
@Html.TextBoxFor(m => m.user.Password)
</div>
<div>
@Html.TextBoxFor(m => m.basicProfile.FirstName)
</div>
<div>
@Html.TextBoxFor(m => m.basicProfile.LastName)
</div>
<div>
<input type="submit" value="send" />
</div>
}
// Маршруты
routes.MapRoute(
name: "BasicRegister",
url: "join",
defaults: new { controller = "Home", action = "BasicRegister" }
);
routes.MapRoute(
name: "DoBasicRegister",
url: "dojoin",
defaults: new { controller = "Home", action = "DoBasicRegister" }
);
Как связаться с пользователем и базовым профилем? Похоже, что вам не хватает отношения один к одному. – Anonymous
Пользователь имеет UserId как PK, а BasicProfile имеет UserId как FK. Отношения один к одному. Использование Linq в sql. – nicejani80
Я думаю, что меня просто смущает тот факт, что в BasicProfile нет публичного пользователя User {get; set;}. Я не говорю, что это должно быть так. Но я так и делаю. :) Я бы подумал, что если вы захотите также показать отношения в классах. – Anonymous