【问题标题】:Submitting a partial view via ajax通过ajax提交部分视图
【发布时间】:2012-12-10 18:47:23
【问题描述】:

我有一个局部视图(表单),我在模式弹出窗口中显示。提交时,它将在数据库中创建一个新条目。这需要通过 ajax 调用来完成。如何在 ajax 调用中传递所有表单字段?我正在使用 MVC4。

我尝试了 $('form').serialize(),但这会导致错误无效 JSON 原语。我做错了什么?

var dataToSend = $('form').serialize();
    $.ajax({
        url: urlForSaving,
        data: dataToSend,
        cache: false,
        type: 'POST',
        dataType: 'json',
        contentType: "application/json;charset=utf-8",
        success: function (data, status) {
        },
        error: function (xhr, ajaxOptions, thrownError) { alert('error') }
    });

控制器

 [HttpPost]
    public JsonResult Add(SomeModel model)
    {
        if (ModelState.IsValid)
        {
            RedirectToAction("Index");
        }

        return Json(new { 
        Success = false,
        Message = "Validation Errors"
        });
    }

【问题讨论】:

    标签: jquery asp.net-mvc-4 partial-views


    【解决方案1】:

    您应该将字段值添加到对象,如下所示,然后将该对象传递给将在所需事件上调用的函数。

     var dataToSend = {
                        fieldname: $("FIELDCLASS OR ID").val();
                      };
    
      function tocall(){
           $.ajax({
                     url: urlForSaving,
                     data: JSON.stringify(obj:dataToSend),
                     cache: false,
                     type: 'POST',
                     dataType: 'json',
                     contentType: "application/json;charset=utf-8",
                     success: function (data, status) {
                 },
                     error: function (xhr, ajaxOptions, thrownError) { alert('error') }
                 });
                       };
    

    【讨论】:

    • 我知道这是可以做到的。但这不是更清洁的方法。如果稍后我在表单中添加一个字段,我也必须在 ajax 调用中进行更改。我想知道这是唯一的方法还是有更好的方法?
    • @annantDev:这是最好的解决方法,如果你真的在寻找不同的东西,那么你可以使用“FormCollection”来做到这一点,只需谷歌它......但你将不得不放弃您的 ajax 功能..希望它有所帮助...
    【解决方案2】:

    从 MVC3 及更高版本开始,我认为在局部视图中使用 Ajax.BeginForm(与 Http.BeginForm 相对)是一种理想的情况。 Ajax 版本会自动为您连接所有内容,包括通过 ajax 发布表单。

    MSDN Ajax.BeginForm

    【讨论】:

      猜你喜欢
      • 2018-02-10
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 2015-09-27
      相关资源
      最近更新 更多