2

在我看来,我使用的是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");
        }
    }

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

注意:我没有使用 AJAX。

4

3 回答 3

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?

于 2013-02-06T04:29:17.420 回答
6

在您的表单 sumbit 上尝试如下:

        $("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');
于 2013-02-06T04:41:33.673 回答
4

根据您的评论,您最简单的做法是制作您的按钮类型submit并给它们一个name. 如果他们有namevalue被点击的按钮的 将与表单帖子一起自动发送,请参阅:发送表单的提交按钮的值?

例子:

a单击按钮时,parameter将发布 value a。对于b和 也是如此c。如果单击该none按钮,则不会发送任何值并将其发送parameternull出于演示目的而显示,您可能不需要此)。

@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" />
}
于 2013-02-06T12:49:06.917 回答