2016-11-13 12 views
-1

エラー:辞書に渡さなぜASP.NET MVCでこのエラーが発生するのですか?

モデルアイテムはタイプ「EventManagmentSystem.Models.RegisterPageModelViewModel」であるが、この辞書は、タイプのモデルアイテムを必要とする「EventManagmentSystem.Models.RegisterViewModel」。

コントローラー:

namespace EventManagmentSystem.Controllers 
{ 
    public class CustomerController : Controller 
    { 
     // GET: Customer 
     public ActionResult Index() 
     { 
      return View(); 
     } 
     public ActionResult Register(RegisterPageModelViewModel rm) 
     { 
      if(ModelState.IsValid) 
      { 

       RegistrationPageModel rp = new RegistrationPageModel 
       { 
        C_Name = rm.C_Name, 
        C_Password = rm.C_Password 
       }; 
      } 

      return View(rm); 
     } 
    } 
} 

ビュー

RegisterPageModelViewModel.cshtml:

@model EventManagmentSystem.Models.RegisterPageModelViewModel 

@using (Html.BeginForm("Register", "Customer",FormMethod.Post, new { @class = "form-inline", role = "form" })) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <h4>RegisterPageModelViewModel</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.C_Name, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.C_Name, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.C_Name, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.C_Password, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.C_Password, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.C_Password, "", new { @class = "text-danger" }) 
      </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> 
} 

Register.cshtml:

@model EventManagmentSystem.Models.RegisterViewModel 

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

    <div class="form-horizontal"> 
     <h4>RegisterViewModel</h4> 
     <hr /> 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
     <div class="form-group"> 
      @Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" }) 
      </div> 
     </div> 

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

     <div class="form-group"> 
      @Html.LabelFor(model => model.ConfirmPassword, htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.ConfirmPassword, new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.ConfirmPassword, "", new { @class = "text-danger" }) 
      </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> 
} 

モデル

RegisterPageModelViewModel.cs:

namespace EventManagmentSystem.Models 
{ 
    public class RegisterPageModelViewModel 
    { 
     [Required(ErrorMessage = "Name is Required")] 
     public string C_Name { get; set; } 

     [Required(ErrorMessage = "Password is Required")] 
     public string C_Password { get; set; } 
    } 
} 

RegistrationPageModel.cs:

namespace EventManagmentSystem.Models 
{ 
    public class RegistrationPageModel 
    { 
     public int C_ID { get; set; } 
     public string C_Name { get; set; } 
     public string C_Password { get; set; } 
     public string C_Gender { get; set; } 
    } 
} 

答えて

0

は、ビュー、コントローラに登録によって返されるべきか確認してください。今すぐRegister.cshtmlを表示し、タイプのRegisterPageModelViewModelのモデルを表示します。しかしRegister.cshtmlにはタイプのモデルが必要です。RegisterViewModelこのエラーが発生しました。

必要な作業に応じて、RegisterViewModelを使用してモデルのタイプを変更します。

public ActionResult Register(RegisterPageModelViewModel rm) 
{   
    ... 
    RegisterViewModel model = new RegisterViewModel{...}; 
    return View(model); 
} 

または、次のように表示を変更します:

public ActionResult Register(RegisterPageModelViewModel rm) 
{   
    ... 
    return View("RegisterPageModelViewModel", rm); 
} 
ようなものでした
関連する問題