在cshtml中获取表单的按钮ID

时间:2014-07-04 19:41:38

标签: javascript jquery asp.net-mvc-4 razor

我在同一页面上有两个表单。在点击任何一个按钮时,正在提交按钮的两个查询,因为我使用了IsPost这样的函数if(IsPost){ //run queries}

由于两个表单都在同一页面上,因此在提交任何按钮时,两个按钮的事件都会被触发。

我想在提交每个按钮时运行单独的查询。

在php中,我们使用了if(isset($_REQUEST['buttonname'])){ //run queries }

有没有这样的方法,我可以在cshtml中实现相同的目标吗?

更新

如果我已经在按钮中传递了值,该怎么办?

喜欢例如:

<div class="btn-group pull-right"> @{ var followersearchcommand = "SELECT * from follow where follow_followerid = @0 and follow_followingid = @1"; var followsearch = db.Query(followersearchcommand, follower_id, row.student_id); } @if(followsearch.Count > 0){ <button class="btn btn-primary" type="submit" name="unfollow_followingid" value="@row.student_id" title="Follow" style="display: none"></button> <button class="btn btn-primary" type="submit" name="unfollow_button" value="unfollow" title="Follow">UnFollow</button> } else{ <button class="btn btn-primary" type="submit" name="followingid" value="@row.student_id" title="Follow" style="display: none"></button> <button class="btn btn-primary" type="submit" name="follow_button" value="follow" title="Follow">Follow</button> } </div>

2 个答案:

答案 0 :(得分:2)

为两个按钮分配相同的名称并测试它们的值:

@{
    if (IsPost){
        if(Request["button"] == "buttonA"){
            // button A is pressed
        } else {
            // button B is pressed
        }
    }
}

<form method="post">
    <input type="submit" name="button" value="buttonA" />
    <input type="submit" name="button" value="buttonB" />
</form>

<强>被修改

如果您想要两个不同的表单,可以使用IsEmpty()方法:

@{
    if (IsPost){
        if(!Request["buttonA"].IsEmpty()){
            // button A is pressed
        } else {
            // button B is pressed
        }
    }
}

<form method="post">
    <input type="submit" name="buttonA" value="buttonA" />
</form>
<form method="post">
    <input type="submit" name="buttonB" value="buttonB" />
</form>

答案 1 :(得分:0)

HTML:

<form id="a">
    <button type="submit">Submit A</button>
</form>

<form id="b">
    <button type="submit">Submit B</button>
</form>

的javascript:

$(function(){
    $("#a").submit(function(e){
        e.preventDefault();
        // Query A
        alert('A');
    });

    $("#b").submit(function(e){
        e.preventDefault();
        // Query B
        alert('B');
    });
});

Demo

编辑:

您可以对控制器的操作进行ajax调用:

$.ajax({
    type: "POST",
    url: "@Url.Action("actionName", "controllerName")",
    data: { /* your data */ },
    success: function (data, textStatus, jqXHR) {
        // success
    },
    error: function (jqXHR, textStatus, errorThrown) {
        // error
    }
});

在你的控制器中:

[AcceptVerbs(HttpVerbs.Post)]
public JsonResult actionName(/* your data */)
{
  var success = DoSomething();

  if (!success)
  {
    throw new HttpException(500, "Server error!");
  }

  return Json("");
}

沿着这些方向......

希望这有帮助!