0

テキストボックスでテキストが変更されたときに、テキストエリアに入力されたテキストを挿入する必要があります.jquery変更関数を使用してこれを完了しました.ajaxからアクションメソッドにコントローラーがヒットしましたが、ビューからのテキストが渡されませんモデル。(使用されるコード: MVC4 /entity dbfirst/ razor ) これが私の詳細なコードです。

コントローラ:

public ActionResult Index()
{            
    return View();
}
public ActionResult Dailynotes()
{            
    return View();
}

//I’m getting this code hit from ajaxcall, but dashboard model is null????????
tblDailyNotes note = new tblDailyNotes();
[HttpPost]
public ActionResult Dailynotes(DashboardViewModel model)
{
    int noteid = 0;
    model.Dailynotes = note.Note;
    _scheduler.InsertDailynote(note);//this is the sp to insert the note
    return View();                 
}

インデックス.cshtml:

<div id="content">

    @(Html.Kendo().TabStrip()
                  .Name("tabstrip")
                  .Items(tabstrip =>
                   {
                      tabstrip.Add().Text("Daily Notes")
                      .Selected(true)
                      .LoadContentFrom("Dailynotes", "Scheduler");

                   })
               )
</div>
<div>
    @{Html.RenderAction("Dailynotes", "Scheduler");}
</div>

Dailynotes.cshtml:

@model  proj.Models.DashboardViewModel

@Html.TextAreaFor(model => model.Dailynotes, new {@class="k-textbox",id="dailynotes"})

<script>
    $("#dailynotes").change(function () {
        alert("Changed");


        debugger;
        $.ajax({
            cache: true,
            type: "POST",
            url: window.location.pathname + "Scheduler/Dailynotes",
            success: function (data) {

            },
            error: function (xhr, ajaxOptions, thrownError) {

            },
            complete: function () { }

         });

    });

ダッシュボードviewmodel.cs

public class DashboardViewModel
{
    public string Dailynotes { get; set; }
    public string Weeklynotes { get; set; }

}

post アクションを呼び出す ajax を取得しますが、dashboardmodel は、モデルのテキスト ボックスに入力したテキストを返しません。

助けてください..

編集1:/動作していません

 $("#dailynotes").change(function () {
        alert("Changed");
        var dailynotes = $('#dailynotes').val();

        debugger;
        $.ajax({
            url: window.location.pathname + 'Scheduler/Dailynotes',
            type: 'POST',
            //data: $('form').serialize(),
            data:{  model:dailynotes   }
        })
         .success(function (result) {
             alert("note saved successfully");

         });
    });
4

3 に答える 3

1

値を投稿する ajax 関数のデータ パラメータがありません

http://api.jquery.com/jQuery.ajax/

サンプル:

$.ajax({
  type: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" }
}).done(function( msg ) {
  alert( "Data Saved: " + msg );
});
于 2013-08-28T10:36:31.970 に答える
1

どうですか:

$("#dailynotes").change(function () {
    alert("Changed");
    var dailynotes = $('#dailynotes').val();

    debugger;
    $.ajax({
        url: window.location.pathname + '/Scheduler/Dailynotes',
        type: 'POST',
        //data: $('form').serialize(),
        data:{  model:dailynotes   }
    })
     .success(function (result) {
         alert("note saved successfully");

    });
});

行を変更したことに注意してdata:{ model:dailynotes }ください。これは、コントローラーのアクションが呼び出されるパラメーターを想定しているためです。model

すなわち public ActionResult Dailynotes(DashboardViewModel model)

POSTアクションがこの属性でマークされているため、タイプも変更しました。

于 2013-08-28T14:58:05.150 に答える
0

ajax呼び出しを使用してビュー上のモデルをコントローラーに渡したい場合は、使用できます

data: $('form').serialize()

テキストのみを渡したい場合は、モデル全体ではなく、文字列型のパラメーターを 1 つだけ渡す必要がありました。

2番目のオプションでは、使用できます

var dailynotes=$('#dailynotes').val();

そしてajax呼び出しで

data:{DailyNotes:dailynotes};

となる文字列型の引数を受け入れるコントローラーアクションDailyNotes

于 2013-08-28T11:02:30.510 に答える