0

当文本框中的文本发生更改时,我需要插入在文本区域中输入的文本。我使用 jquery 更改函数来完成此操作。我让控制器从 ajax 访问 actionmethod 但是,视图中的文本没有传递给模型。(使用的代码: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 () { }

         });

    });

仪表板视图模型.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

IE public ActionResult Dailynotes(DashboardViewModel model)

我还将类型更改POST为使用此属性标记的操作。

于 2013-08-28T14:58:05.150 回答
0

如果您想使用 ajax 调用将视图上的模型传递给控制器​​,您可以使用

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

如果您只想传递文本,那么只需要传递一个字符串类型的参数而不是整个模型。

对于第二个选项,您可以使用

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

并在 ajax 调用中

data:{DailyNotes:dailynotes};

和带有字符串类型接受参数的控制器操作,它将是DailyNotes

于 2013-08-28T11:02:30.510 回答