2017-05-20 20 views
1

ActionResultメソッドにフォームを送信しようとしていますが、常にnullです。
実際、エラーが発生しました値はnullにはできません。しかし、なぜ私はそれがエラーになったのかわかりません。なぜasp.net MVCでActionResultメソッドのパラメータがnullですか?

ここにはActionResultコードと私の意見があります。

public class VocabularyController : Controller 
{ 
    private VocabContext _context; 

    public VocabularyController() 
    { 
     _context = new VocabContext(); 
    } 
    // GET: Vocabulary 
    [Route("New")] 
    public ActionResult New() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Save(Vocabulary word) 
    { 

     if (ModelState.IsValid) 
     { 
      _context.Vocabularies.Add(word); 
      _context.SaveChanges(); 
     } 

     return RedirectToAction("dashboard", "Home"); 
    } 



} 

==============================

@model EnglishTest.Models.Vocabulary 

@{ 
    ViewBag.Title = "New"; 
} 

<div class="row"> 
    <div class="col-lg-12"> 
     <div class="element-wrapper"> 
      <h6 class="element-header">New Word Form</h6> 
      <div class="element-box"> 
       @using (Html.BeginForm("Save", "Vocabulary", FormMethod.Post)) 
       { 
       <div class="form-group"> 
        @Html.LabelFor(m => m.Word) 
        @Html.TextAreaFor(m => m.Word, new { @class = "form-control", @placeholder = "Word" }) 
        @Html.ValidationMessageFor(m => m.Word) 
       </div> 
       <div class="row"> 
        <div class="col-sm-12"> 
         <div class="form-group"> 
          @Html.LabelFor(m => m.Defination) 
          @Html.TextAreaFor(m => m.Defination, new { @class = "form-control", @placeholder = "Definition" }) 
          @Html.ValidationMessageFor(m => m.Defination) 
         </div> 

        </div> 
       </div> 
       <div class="row"> 
        <div class="col-sm-12"> 
         <div class="form-group"> 
          @Html.LabelFor(m => m.Synonym) 
          @Html.TextAreaFor(m => m.Synonym, new { @class = "form-control", @placeholder = "Synonym" }) 
          @Html.ValidationMessageFor(m => m.Synonym) 
         </div> 
        </div> 
       </div> 

       <div class="row"> 
        <div class="col-sm-12"> 
         <div class="form-group"> 
          @Html.LabelFor(m => m.PersianTranslate) 
          @Html.TextAreaFor(m => m.PersianTranslate, new { @class = "form-control", @placeholder = "Persian Translation" }) 
          @Html.ValidationMessageFor(m => m.PersianTranslate) 
         </div> 
        </div> 
       </div> 

       <div class="row"> 
        <div class="col-sm-12"> 
         <div class="form-group"> 
          @Html.LabelFor(m => m.Examples) 
          @Html.TextAreaFor(m => m.Examples, new { @class = "form-control", @placeholder = "Examples" }) 
          @Html.ValidationMessageFor(m => m.Examples) 
         </div> 
        </div> 
       </div> 
       @Html.HiddenFor(m => m.Id) 
       <div class="form-buttons-w"><button class="btn btn-primary" type="submit"> Save</button></div> 
      } 
     </div> 
    </div> 
    </div> 
</div></div> 

====== ========================

public class Vocabulary 
    { 

     public int Id { get; set; } 
     [Required] 
     public string Word { get; set; } 
     [Required] 
     public string Defination { get; set; } 
     [Required] 
     public string Synonym { get; set; } 
     [Required] 
     public string PersianTranslate { get; set; } 
     [Required] 
     public string Examples { get; set; } 
    } 
+0

コントローラーの名前は –

+0

@ HakamFostokです。これはボキャブラリーです。 – robinson

+0

あなたはidの値をチェックしましたか? –

答えて

0

フォームへの投稿を指定します

@using (Html.BeginForm("Save", "Vocabulary", FormMethod.Post)) 

また第二@です要求しないried:

Html.BeginForm("Save", "Vocabulary", FormMethod.Post) 
+0

それは動作しません。 – robinson

+0

cshtmlコード全体を投稿してください。 –

+0

私のcshtmlコードが更新されました。 – robinson

2

I入力パラメータをモデル名に変更しました。正常に動作します。

public ActionResult Save(Vocabulary vocabulary) 
関連する問題