按钮事件不在mvc中调用action方法

时间:2014-10-15 05:38:29

标签: asp.net-mvc asp.net-mvc-4

在我的mvc应用程序中,控制器方法根本没有调用,我使用脚本来调用方法并且是一个新手

     $('#submit_fourth').click(function () {

    alert('data sent');
    $.ajax({
        url: "/Home/Index",
        data: { 'Id': groupId },
        type: 'GET',
        success: function (result) {
            //do the necessary updations
        },
        error: function (result) {
        }
    });
    });

按钮事件是

    <input class="send submit" type="submit" id="submit_fourth"  value="" />

我的行动是

 public ActionResult Index(Models.Companyregister comreg)
    {


        if (ModelState.IsValid)
        {


            dataaccess.Companyregister_D ds = new dataaccess.Companyregister_D();

            int a = ds.insertcompanyregister(comreg);

                        }
        return View();
    }

我的问题是如何将模型传递给控制器​​方法以及如何调用控制器方法?谢谢你的推荐

5 个答案:

答案 0 :(得分:0)

我认为您使用的是 GET 请求,理想情况下应该是 POST 请求。

喜欢 -

 $('#submit_fourth').click(function () {
alert('data sent');
$.ajax({
    url: "/Home/Index",
    data: { 'Id': groupId },
    type: 'POST',
    success: function (result) {
        //do the necessary updations
    },
    error: function (result) {
    }
});
});

答案 1 :(得分:0)

解决方案1:

更改索引方法类型,或者从您尝试调用[HTTPPOST]方法的脚本中创建新的post

解决方案2 :(我更喜欢)

将输入类型从button更改为submit以避免多次提交。

解决方案3:

在html代码中调用Onclick函数,如: <input type="submit" OnClick=DataSubmit(); />

<强>脚本

<script>
DataSubmit()
{
    //Do your stuff;
};
</script>

答案 2 :(得分:0)

您必须要发送带有ajax的模型,以便您的操作必须具有[HttpPost]并在您的ajax调用代码中添加此

//Ajax Call inClient
$('#submit_fourth').click(function () {
$.ajax({
url: "/Home/CreateUser",
data: $('#formId').Serialize(),
type: 'POST',
success: function (result) {
    //To DO
}
});
});
// Model
public class User
{
 public string UserName { get; set; }
 public string Code{ get; set; }
}
// Action
[HttpPost]
  public ActionResult CreateUser(User model)
   {
      return View();
   }
//View
@using (Html.BeginForm( new { Id= "form" }))
{
 <div class="form-group">
     @Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
     <div class="col-md-10">
     @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })

      </div>
     </div>
<div class="form-group">
     @Html.LabelFor(m => m.Code, new { @class = "col-md-2 control-label" })
     <div class="col-md-10">
     @Html.TextBoxFor(m => m.Code, new { @class = "form-control" })

      </div>
      </div>
<input type="button" id="submit_fourth"  value="Save" class="btn btn-default" />
}

答案 3 :(得分:0)

  

如何将模型传递给控制器​​方法以及如何调用   控制方法?

您可以通过以下方式将数据发送到控制器操作:

<强> Index.cshtml

<input class="send submit" type="submit" id="submit_fourth"  value="" />

<script>

    $('#submit_fourth').click(function() {

        alert('data sent');

        var model = { Name: "ABC Inc", UsedForYear: "2014" };
        $.ajax({
                url: '@Url.Action("Index", "Home")',
                contentType: 'application/json; charset=utf-8',
                type: 'POST',
                dataType: 'html',
                data: JSON.stringify(model)
            })
            .success(function(result) {
            });
    });

    </script>

<强> Controller.cs

    public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(CompanyRegister companyregister)
    {
        if (ModelState.IsValid)
        {
            // Use the incoming data
        }

        return View();
    }
}

public class CompanyRegister
{
    public string Name { get; set; }
    public string UsedForYear { get; set; }
}

答案 4 :(得分:0)

将您的请求类型更改为&#39; POST&#39;,我认为您要插入一些数据,因此您必须调用POST方法&amp;插入&#34; HTTPPOST&#34;您的操作方法上方的注释如下:

[HttpPost]
public ActionResult Index(Models.Companyregister comreg)
{
    if (ModelState.IsValid)
    {


        dataaccess.Companyregister_D ds = new dataaccess.Companyregister_D();

        int a = ds.insertcompanyregister(comreg);

                    }
   }