如何在我的JQUERY提交中添加其他数据?

时间:2013-02-06 04:26:09

标签: c# jquery asp.net-mvc jquery-ui asp.net-mvc-4

在我的剃刀视图中,我使用的是Html.BeginForm。在其中我有两个元素,当我设置clic时,应该提交表单但我需要添加一个额外的字符串参数。

@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" }))
{
    ...
}

    [HttpPost]
    public ActionResult Index(string parameter, QuizCompletedViewModel q)  //FormCollection f)
    {            
        ...
        if (button.Equals("d"))
        {
            ...
            return RedirectToAction("ShowResults", new { testId = Quiz.QuizId, answeredTest = answeredId });
        }
        else
        {
            ...
            return RedirectToAction("Index", "Dashboard");
        }
    }

因此,在我的jquery函数中,我使用$("#element").submit(),参数parameter总是为空(这是正常的)。如何使用JQUERY为parameter添加其他数据?

注意:我没有使用AJAX。

3 个答案:

答案 0 :(得分:6)

您可以使用表单中所需的名称和值添加隐藏的输入。此值将与所有其他表单项一起提交。

<input type="hidden" name="someName" value="someValue" />

编辑评论:

如果您将每个提交按钮作为属性提供,您可以在单击处理程序中获取它,然后在表单内附加一个带有值的隐藏字段。类似的东西:

$(function(){
   $('#form input[type=submit]').click(function(e) {
       var val = this.getAttribute("data-param");
       $(this).closest('form').append('<input type="hidden" name="param" value="' + val + '" />");
   });
});

未经测试,只是一种预感。希望在按钮单击事件之前不会触发表单提交事件。您还需要处理输入事件和按键等。

为什么不想使用ajax?

答案 1 :(得分:6)

在您的表单提交上尝试如下:

        $("form").submit(function(){
           $.ajax({     
                type: 'POST',  
                url: "/Quiz/Index",
                dataType: "json",
                data: $("form").serialize() + '&parameter=param1' ,   
                success: function () { 
                    alert("Successful"); 
                }
                error: function(){
                    alert('error');
                }

            }); 
        });

希望它有所帮助。


修改

在jQuery函数中尝试这样:

$('form').append('&param=a');

答案 2 :(得分:4)

根据您的评论,您最简单的方法是按下submit类型的按钮并为其指定name。如果他们有name,则点击按钮的value将自动与表单发送,请参阅:sending form's submit button's value?

示例:

点击a按钮后,parameter将以值a发布。同样适用于bc。如果点击none按钮,则不会发送任何值,parameter将为null(出于演示目的显示,您可能不需要此值)。

@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" }))
{
    ...

    <input type="submit" value="a" name="parameter" />
    <input type="submit" value="b" name="parameter" />
    <input type="submit" value="c" name="parameter" />
    <input type="submit" value="none" />
}