2014-11-03 3 views
0

확인보기 여러 모델 만들기ASP.Net MVC는

public partial class security_questions 
{ 
    public int id { get; set; } 
    public string security_question { get; set; } 
} 
나는 다음이

public class NewUserProfileViewModel 
{ 
    public IEnumerable<security_questions> Questions { get; set; } 
    public IEnumerable<user_details> EditableDetails { get; set; } 
} 

public class ProfileController : Controller 
{ 
    private readonly CCLPasswordManagementDBEntities passwordManagementConnection = new CCLPasswordManagementDBEntities(); 

    public ActionResult Manage() 
    { 
     bool userfound = false; 
     var userItemsModel = passwordManagementConnection.View_registered_userdetails; 

     foreach (var item in userItemsModel.Where(item => item.username == User.Identity.Name)) 
     { 
      userfound = true; 
     } 
     if (userfound) 
     { 
      UserProfileInfoViewModel upi = new UserProfileInfoViewModel 
      { 
       RegisteredDetails = userItemsModel, 
       Questions = passwordManagementConnection.security_questions 
      }; 
      return View(upi); 
     } 
     return RedirectToAction("Register"); 
    } 

    public ActionResult Register() 
    { 
     NewUserProfileViewModel upi = new NewUserProfileViewModel 
     { 
      Questions = passwordManagementConnection.security_questions, 
      EditableDetails = passwordManagementConnection.user_details 
     }; 
     return View(upi); 
    } 

    [HttpPost] 
    public ActionResult Register(NewUserProfileViewModel newUserProfile) 
    { 
     if (ModelState.IsValid) 
     { 
      return RedirectToAction("Index", "Home"); 
     } 
     else 
     { 
      return View(newUserProfile); 
     } 
    } 
공처럼 보이는 컨트롤러가

이 레지스터의 행동에 갈 때

나는 내가 뭘하려고 오전 몇 Html.TextboxFor 그러나 나는 통과 할 때 Html.TextboxFor (모델 => model.editabledetails을 할 것입니다

@model ServiceDeskMVCTool.Controllers.NewUserProfileViewModel 
@{ 
    ViewBag.Title = "Register Account"; 
    Layout = "~/Views/Shared/_CCLLayoutStandard.cshtml"; 
} 

@section title {<h1>@ViewBag.Title</h1>} 
@section subtitle {<h3>Hi @User.Identity.Name You have not set up your profile yet</h3>} 

<div id="page-block" class="page-block-three row"> 
    <div class="col-lg-offset-3 col-lg-6"> 

     @using (Html.BeginForm()) 
     { 
      @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
      <fieldset> 
       <div class="form-group"> 
        <h5>Pincode</h5> 
        @Html.TextBoxFor() 
       </div> 
      </fieldset> 
      <div class="form-group"> 
       <h5>Pincode</h5> 
       <input class="form-control ccl-form input-md" id="textinput" name="textinput" placeholder="Enter a 6 digit pincode" type="text"> 
      </div> 
      <!-- Mobile Number --> 
      <div class="form-group"> 
       <h5>Mobile Number</h5> 
       <input class="form-control ccl-form input-md" id="textinput" name="textinput" placeholder="Enter your work mobile number" type="text"> 
      </div> 
      <!-- Security Question 1 --> 
      <div class="form-group"> 
       <h5>Security Question 1</h5> 
       <select class="form-control ccl-form" id="selectbasic" name="selectbasic"> 
        @foreach (var item in Model.Questions) 
        { 
         <option value="@item.id">@item.security_question</option> 
        } 
       </select> 
       <input class="form-control ccl-form input-md form-padding" id="textinput" name="textinput" placeholder="Enter your security answer" type="text"> 
      </div> 
      <!-- Security Question 2 --> 
      <div class="form-group"> 
       <h5>Security Question 2</h5> 
       <select class="form-control ccl-form" id="selectbasic" name="selectbasic"> 
        @foreach (var item in Model.Questions) 
        { 
         <option value="@item.id">@item.security_question</option> 
        } 
       </select> 
       <input class="form-control ccl-form input-md form-padding" id="textinput" name="textinput" placeholder="Enter your security answer" type="text"> 
      </div> 
     } 

     <button style="margin-top: 10px" class="btn ccl-btn ccl-btn-md ccl-btn-red pull-right" type="button">Register</button> 
    </div> 
</div> 

아래 같은 전망을 .pincode) 작동하지 않습니다.

나는 이것에 상당히 새롭기 때문에 쉽게 가십시오!

감사합니다.

답변

2

바인딩 할 뷰 모델에 IEnumerable이 아닌 단일 개체가 있어야합니다. 다음과 같이 시도하십시오. 보기에

보기 모델

public class NewUserProfileViewModel 
{ 
    public IEnumerable<security_questions> Questions { get; set; } 
    public IEnumerable<user_details> EditableDetails { get; set; } 

    public user_details UserDetail { get; set; } 
} 

@Html.TextBoxFor(x => x.UserDetail.pincode) 
+0

처음 문제가 해결되면 끝났습니다. –

+0

목록 상자에서 선택한 보안 질문을 추출하여 모델에 배치해야합니다. 어떻게해야합니까? –

+0

'name = 'UserDetail.secanswer1'' 등 등보기 모델과 일치하도록 선택 목록의 이름 속성을 변경하십시오. – mituw16

0
@model ServiceDeskMVCTool.Controllers.NewUserProfileViewModel 
@{ 
    ViewBag.Title = "Register Account"; 
    Layout = "~/Views/Shared/_CCLLayoutStandard.cshtml"; 
} 

@section title {<h1>@ViewBag.Title</h1>} 
@section subtitle {<h3>Hi @User.Identity.Name You have not set up your profile yet</h3>} 

<div id="page-block" class="page-block-three row"> 
    <div class="col-lg-offset-3 col-lg-6"> 

     @using (Html.BeginForm()) 
     { 
      @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

      <fieldset> 
       <div class="form-group"> 
        <h5>Pincode</h5> 
        @Html.TextBoxFor(x => x.UserDetail.pincode, new { @class = "form-control ccl-form input-md", placeholder = "Enter a 6 digit pincode" }) 
       </div> 
       <div class="form-group"> 
        <h5>Mobile Number</h5> 
        @Html.TextBoxFor(x => x.UserDetail.mobilenumber, new { @class = "form-control ccl-form input-md", placeholder = "Enter your work mobile number" }) 
       </div> 
       <div class="form-group"> 
        <h5>Security Question 1</h5> 
        <select class="form-control ccl-form" id="selectbasic" name="UserDetail.secq1id"> 
         @foreach (var item in Model.Questions) 
         { 
          <option value="@item.id">@item.security_question</option> 
         } 
        </select> 
        @Html.TextBoxFor(x => x.UserDetail.secanswer1, new { @class = "form-control ccl-form input-md form-padding", placeholder = "Enter your security answer" }) 
       </div> 
       <div class="form-group"> 
        <h5>Security Question 2</h5> 
        <select class="form-control ccl-form" id="selectbasic" name="UserDetail.secq2id"> 
         @foreach (var item in Model.Questions) 
         { 
          <option value="@item.id">@item.security_question</option> 
         } 
        </select> 
        @Html.TextBoxFor(x => x.UserDetail.secanswer2, new { @class = "form-control ccl-form input-md form-padding", placeholder = "Enter your security answer" }) 
       </div> 
       <input type="submit" style="margin-top: 10px" class="btn ccl-btn ccl-btn-md ccl-btn-red pull-right" value="Register" /> 
      </fieldset> 
     } 
    </div> 
</div> 

이 일하는 것 같다.

정말 고마워요.