2017-10-25 6 views
0

すでにいくつかの類似の投稿があり、提案されたすべてのソリューションを試したが、まだ動作しません...コントローラ内で値を取得できません、常にnullです。以下はコードです。何か不足していますか?アクションパラメータがnullを返す

クライアント側のJavaScript

var arr = []; 
     $('.myForm').each(function() { 
      var ids = { 
       n:$('#name').val(), 
       c: $('#student_class').val(), 
       g: $('#gender').val(), 
       p: $('#phone').val() 
      } 
      arr.push(ids); 

     }); 
     $.ajax({ 
      url: "/Home/InsertStudent/", 
      type: "POST", 
      cache: false, 
      contentType: 'application/json', 
      datatype:"html", 
      data: JSON.stringify(arr), 
      success: function (result) { 
       alert("success"); 
       // $(" ").html(result) 
      }, 
      error: function() { 
       alert("error"); 
      } 
     }); 

MVCコントローラ

public PartialViewResult InsertStudent(StudentData model) 
    { 
     return PartialView(); 
    } 

モデルクラス

public class StudentData 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public string student_class{ get; set; } 
    public bool gender { get; set; } 
    public int phone { get; set; } 
} 

マイビュー

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


<div class="container"> 
    <div class="row"> 
     <div class="col-md-2"> 
      <div><input type="button" value="Admin" id="admin" class="btn btn-default" onclick="Admin()" /></div> 
     </div> 
     <div class="col-md-2"> 
      <div><input type="button" value="Student" id="student" class="btn btn-default" onclick="Student()" /></div> 
     </div> 
     <div class="col-md-8"> 
      <div id="partial"> 
       @*@{ Html.Partial("InsertStudent");}*@ 
      </div> 
     </div> 
    </div> 
</div> 
        } 
+0

StudentDataの種類は何です: は、JavaScriptで次のように変更しますか? – MstfAsan

+0

StudentDataはモデルクラス名です。私が間違っていることをお勧めしますか?私はプログラミングに新しいです。 – anjali

+0

あなたはサーバに配列を送信しています。実際にはどのサーバが単一のオブジェクトではないかのようです。 – MstfAsan

答えて

0

変更ボタンにボタンのtype属性。

関数は(保存){

 // var arr = []; Comment out the array 
    var ids; // Declare ids out side the eachloop 

        var ids = { 
     name :$('#name').val(), 
     student_class: $('#student_class').val(), 
     gender : $('#gender').val(), 
     phone : $('#phone').val() 
} 
        // arr.push(ids); //Comment out this 


       $.ajax({ 
        url: "/Home/InsertStudent/", 
        type: "POST", 
        cache: false, 
        contentType: 'application/json', 
        datatype:"html", 
        data: JSON.stringify(ids), // send ids instead of array 
        success: function (result) { 
         alert("success"); 
         // $(" ").html(result) 
        }, 
        error: function() { 
         alert("error"); 
        } 
       }); 

}

+0

で表示できますか?( – anjali

+0

myFormクラスのhtml domがありますか? myFormクラスまたは入力要素をビュー内に見つけることができません –

+0

(もしあれば)はい........ –

0
@model Demo.Models.StudentData 
@{ 
ViewBag.Title = "InsertStudent"; 
} 

<div class="jumbotron text-center"> 
<h3>Student Portal</h3> 
<p>Please enter your information here....</p> 
</div> 
<div class="col-md-4"> 
<div class="container"> 
    <div class="myForm"> 
    <div class="form-group row"> 
    @Html.HiddenFor(m => m.id) 
@Html.Label("Name") 
@Html.TextBoxFor(m => m.name) 
    </div> 

    <div class="form-group row"> 
     @Html.Label("Class") 
     @Html.DropDownList("student_class", new List<SelectListItem> 
    {new SelectListItem {Text="I",Value="1" }, 
    new SelectListItem {Text="II",Value="2" }, 
    new SelectListItem {Text="III",Value="3" }, 
     new SelectListItem {Text="IV",Value="4" }, 
     new SelectListItem {Text="V",Value="5" } 
    }, "select") 
    </div> 
    <div class="form-group row"> 
     @Html.Label("Gender") 
     @Html.RadioButtonFor(m => m.gender, "M", true) Male 
     @Html.RadioButtonFor(m => m.gender, "F", false) Female 
    </div> 
    <div class="form-group row"> 
     @Html.Label("Phone") 
     @Html.TextBoxFor(m => m.phone) 
    </div> 
       <input type="submit" value="Save" onclick="Save()"/> 
      </div> 

+0

てくださいこんにちは私は私の答えを更新しました –

+0

はまた、私は$を削除することで、更新はJavaScriptをしました(「あるmyForm」)。それぞれ()およびすべてのコードアウト側に配置されています。 –