2014-01-24 1 views
1

이상한 오류가 있습니다. SQL Server Management Studio를 사용하여 데이터베이스를 만들었습니다. 모든 기본 키, 외래 키, 고유 설정 및 작동.ASP.NET MVC 생성 된보기가 제대로 작동하지 않습니다.

내가 MVC 프로젝트 생성 모델, 컨트롤러로 데이터베이스를 수입하고, 모든이 튜토리얼의 스탠드로보기 : click

을하지만 검증에 구축 알 수없는 이유로는 외래 키에 대해서만 작동합니다! 다른 모든 유효성 검사 규칙은 Visual Studio에 의해 스캐 폴딩되었습니다.

내가 제공해야하는 코드를 모른다면 언제든지 물어보십시오. 내 질문을 업데이트 할 것입니다.

예 : 사용자 만들기 :

@model magazyn.Models.User 

@{ 
    ViewBag.Title = "Create"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Create</h2> 


@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 

<div class="form-horizontal"> 
    <h4>User</h4> 
    <hr /> 
    @Html.ValidationSummary(true) 

    <div class="form-group"> 
     @Html.LabelFor(model => model.EmployeeNo, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.EmployeeNo) 
      @Html.ValidationMessageFor(model => model.EmployeeNo) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Name) 
      @Html.ValidationMessageFor(model => model.Name) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.Surname, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Surname) 
      @Html.ValidationMessageFor(model => model.Surname) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.ContactInfo, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.ContactInfo) 
      @Html.ValidationMessageFor(model => model.ContactInfo) 
     </div> 
    </div> 

    <div class="form-group"> 
     @Html.LabelFor(model => model.RoleId, "RoleId", new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownList("RoleId", String.Empty) 
      @Html.ValidationMessageFor(model => model.RoleId) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Create" class="btn btn-default" /> 
     </div> 
    </div> 
</div> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

컨트롤러 :

 public ActionResult Create() 
    { 
     ViewBag.RoleId = new SelectList(db.Roles, "Id", "RoleName"); 
     return View(); 
    } 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    [UserEditAuth] 
    public ActionResult Create([Bind(Include="Id,EmployeeNo,Name,Surname,ContactInfo,RoleId")] User user) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Users.Add(user); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     ViewBag.RoleId = new SelectList(db.Roles, "Id", "RoleName", user.RoleId); 
     return View(user); 
    } 

및 사용자 엔티티 (entityFramework에 의해 생성) :이 때문에

이 경우
public partial class User 
{ 
    public User() 
    { 
     this.DeviceUsages = new HashSet<DeviceUsage>(); 
    } 

    public int Id { get; set; } 
    public string EmployeeNo { get; set; } 
    public string Name { get; set; } 
    public string Surname { get; set; } 
    public string ContactInfo { get; set; } 
    public int RoleId { get; set; } 

    public virtual ICollection<DeviceUsage> DeviceUsages { get; set; } 
    public virtual Role Role { get; set; } 
} 

만 역할 검증 다른 테이블의 외래 키

+0

보기 중 하나 (예 :보기), 컨트롤러 동작 및 엔티티 중 하나에 대한 소스 코드가 있어야 도움이 될 것입니다 ... – eiximenis

+0

확인. 이 액션에 사용 된 뷰, 컨트롤러 액션 및 엔티티가 추가되었습니다. – szpic

답변

1

모든 모델을 생성하려면 Database-first aproach를 사용하고 있습니다.

+0

저에게 이상합니다. 코드에서 다시이 작업을 수행해야하는 경우 null이 아닌 DB에 제약 조건을 추가해야하는 이유 ... – szpic

+0

뷰 유효성 검사가 모델의 특성과 함께 작동합니다. 필요한 모든 것을 제공하지 않았기 때문에 Model.IsValid가 제대로 작동하지 않습니다. DB에 대한 모든 것을 알지 못하기 때문입니다. – Fals

+0

감사. 나는 ET가 모든 것을 가져오고 model.edmx가 "null이 아님"이 어디에 있는지를 보여 주면 모든 것이 생성 될 것이라고 생각했다. 다시 한 번 감사드립니다! – szpic

관련 문제