使用隐藏输入生成表单并提交操作

时间:2016-12-06 04:05:29

标签: javascript c# jquery .net forms

我认为这比以前简单得多。我需要从我的数据表中的单元格中提取数据(我可以这样做),然后通过带有隐藏字段的表单提交数据,以便将变量传递给我的控制器中的操作。

我在代码中做了类似的事情,除了生成表单。

我尝试了不同的方法,无论在我的操作中访问集合时,值为null。

我的观看功能:

$('#myTable').on('click', 'td', function () {
            var serial = table.cell(this).data();


            var form = $('<form action="@Url.Action("status")" id="hiddenform"><input type="hidden" id="serial" name="serial" value=""></form>').appendTo('body');
            $('.serial').val(serial);
            form.submit();


        });

和我正在解析的控制器:

//Accept GET and POST
    [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
    public ActionResult Status(System.Web.Mvc.FormCollection collection)
    {
        string serial = collection["serial"];

        if (serial == null || serial == "")
            System.Windows.Forms.MessageBox.Show("Error: Serial is NULL");

        return View(serial);
    }

老实说,为了解决这个问题,我已经对我的代码进行了大量的修改,因此看起来非常糟糕。

任何帮助都将不胜感激。

我每次在控制器中收到错误:Serial is NULL弹出窗口。但是,如果我测试JQuery的值不为null,则返回正确的值。

2 个答案:

答案 0 :(得分:1)

您是否尝试将方法签名更改为以下内容?

public ActionResult Status(string serial)

其中serial将是您将从HTML表单传递的参数名称。

如果HTML中的参数名称为blah,则可能需要将方法签名更改为以下内容:

public ActionResult Status(string blah)

答案 1 :(得分:0)

您的隐藏字段具有serial的name和id属性,但用于分配值的jQuery选择器正在查找类。尝试#而不是按ID选择:

$('#serial').val(serial);

或者,您可以使用jQuery将AJAX POST数据发送到控制器:

$.post( '@Url.Action("status")', { serial: table.cell(this).data() } );

并调整控制器以获得串行参数:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Status(string serial)
{
    if (serial == null || serial == "")
        System.Windows.Forms.MessageBox.Show("Error: Serial is NULL");

    return View(serial);
}