0

我正在一个需要在操作之间传递变量的网站上工作。变量实际上是input字段。这是一些示例标记。

<table>
    <tr>
        <td><input type="checkbox" name="major/1" value="1" checked /></td>
    </tr>
    <tr>
        <td><input type="radio" name="major/2" value="1" checked /></td>
        <td><input type="radio" name="major/2" value="2" /></td>
    </tr>
</table>

<a href="/NextPage/2/2">Next Page</a>

我基本上想要那些通过分页系统传递的值,以便最终可以全部使用。我怎么能做到这一点?最好不使用围绕整个页面的表格。

4

3 回答 3

1

将输入表单元素从一个页面传递到另一个页面的唯一方法是通过表单发布。您当然可以通过会话或类似方式传递数据,但这不是在表单元素中传递它们。

我不明白你不愿意使用表格。隐藏字段是表单元素。它们以表格形式使用。这就是他们的目的。您想使用表单元素但不使用表单?这很没有意义。

编辑:

我认为您的问题是您并不真正了解浏览器和服务器的工作方式。它们仅通过 get 和 post 命令进行通信。因此,向服务器发送输入的唯一方法是通过帖子,并且帖子必须包含表单。这就是浏览器发送数据的方式。

您可以通过 javascript 做很多事情,但所有这些事情都比仅仅发布您的帖子要复杂得多。

于 2012-04-14T23:12:10.587 回答
0

我可以看到两种可能的方法。首先,在回发表单中使用隐藏的输入字段。这将确保来自当前迭代的变量在回发时保存到模型中:

@Html.HiddenFor(model=>model.Field1)

第二个是将您需要的任何内容保存到控制器端的 TempData 并在下一次回发时检索它:

TempData["tempkey"] = MyModel;

我认为最佳解决方案是否是其中之一(或其他)取决于您的模型和控制器逻辑的外观。

于 2012-04-14T23:02:10.553 回答
0

在不使用表单的情况下完成此操作的最简单方法是使用 jQuery 或 javascript 来获取值并将它们附加为 url 变量,假设这是一种可接受的方法。另一种方法是捕获值,通过 ajax 提前发送它们,并让您的后端在访问链接之前将它们存储为会话变量首先,给链接一个类名以收听...

$('.navigation').on('click', '.pagelink', function(e){
    e.preventDefault();

    // url variables method
    var theUrl = ($(this).attr('href')) + '?';
    var ajaxUrl = $(this).attr('href');

    // needed for ajax method
    var theVals = new Object();
    $.each('table input', function() {
        // needed for ajax method
        var theName = $(this).attr('name');
        theVals[theName] = $(this).val();
        // url variables method
        theUrl = theUrl + theName + '=' + $(this).val() + '&';
    });
    // url variables method
    theUrl = theUrl.substr(0, theUrl.length - 2);// removes ending ampersand
    window.location = theUrl;

    // the ajax session method
    $.ajax({
        url : [MVC path to store session variables - ex: /ajax/setsession/],
        type : 'POST',
        data : theVals,
        success : function(data) {
            if(data) {
                // do something with data, like display success message
                window.location = ajaxUrl;
            }
        }
    });
于 2012-04-14T23:23:18.190 回答