通过JavaScript修改的表单传递变量

时间:2013-01-29 21:06:58

标签: javascript jquery asp.net-mvc

我正在搜索一个显示结果表的搜索页面。我想用Javascript添加一些功能。整个表封装在一个表单中,表中的每个项都有几个可以执行的操作;一个例子是Add comment

我能够正确传递所有其他表单变量,因为它们是静态的。我遇到的问题是能够将ID传递给操作,因为它会针对结果的每一行进行更改。这是我到目前为止(缩短)

动作标题:

public ActionResult Create( ........., Int ID);

查看:

...

@foreach( var item in Model )
{
    ...
    @Html.ActionLink("Comment", "Create", "Comment", new { ID = Model.ID }, new { onclick = "CommentSubmit(@Model.ID)" })
}

使用Javascript:

function CommentSubmit(id) {

            //What do?
    $("#DynForm").attr("action", "/Comment/Create");
    $("#DynForm").submit();
};

除了我的其他表单变量之外,我怎样才能让Javascript / jQuery传入ID

有点问题,但我是否需要停止执行原始锚点(因为我的javascript正在提交表单)?我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以在提交带有ID

的表单之前创建或更新隐藏的输入
function CommentSubmit(id) {
    if($("#DynForm #id").length > 0)
        $("#DynForm #id").val(id);
    else
        $("#DynForm").append("<input type='hidden' id='id' name='id' value='"+id+"' />");

    $("#DynForm").attr("action", "/Comment/Create");
    $("#DynForm").submit();
};

答案 1 :(得分:1)

你可以这样做

<input type="hidden" name="myID" />


function CommentSubmit(id) {

    $("#myID").val(id);        
    $("#DynForm").attr("action", "/Comment/Create");
    $("#DynForm").submit();
};

然后在控制器中添加myID作为参数

Public ActionResult Action(string myID , .... ){

}

或者,你可以这样做

 function CommentSubmit(id) {
        //What do?
$("#DynForm").attr("action", "/Comment/Create/" + id);
$("#DynForm").submit();

};

Asp.Net中的默认路由将使用url的第三部分作为参数“id”

离。 {控制器} / {行动} / {ID}