将多个值从View传递给Action方法

时间:2012-03-06 18:49:17

标签: jquery asp.net-mvc-3

我有以下代码,我有3个与之相关的问题:

视图中的JScript:

$('#page1').load('@Url.Action("QuestionList", "Tests", new { testId = Model.Test.ID , Page = 2 })');

测试控制器中的操作:

public ActionResult QuestionList(int testId, int Page)
    {
        // some meaningless operations here
        return PartialView("QuestionList", somevalue);
    }

(局部视图也是QuestionList - 我尝试了另一个名字,只是为了安全起见 - 而且它再次无效)

问题:

  1. 仅使用testId时,一切都很好。现在我添加了Page,Action paramter Page始终为null。
  2. 我创建了一个应该替换这两个变量的模型。新模型始终为空。
  3. 第三个问题与标题无关,但与当前问题无关 - 如何将视图中的值传递给Url.Action方法?我知道该方法是服务器端,并且带有JScript的视图在客户端上,但是我必须解决的这个最后一个问题我只是迷路了。
  4. 我已经检查了这样的线程:Pass multiple values from view,但建议的解决方案实际上是我的问题。

    非常感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

您是否尝试检查对服务器的请求中的查询字符串,以确保它没有被转义?
它应该类似于

"/Tests/QuestionList?testId=1&Page=2"

我的猜测是逃脱了:

"/Tests/QuestionList?testId=1&Page=2"

如果这是问题,请使用@ Html.Raw()帮助程序。有关完整的解决方案,请参阅MVC3 Url.Action querystring generation

答案 1 :(得分:0)

首先:你是怎么通过模特的?当使用MVCContrib网格时,我遇到了类似于你的问题。我试图通过实例化一个新对象来发送列和顺序等数据,但这并没有锻炼。我不得不传递类似@Url.Action("QuestionList", "Tests", new { testId = Model.Test.ID , Page = 2, options = new MVCContrib.Options() })的MVCContrib.Options对象,而是发送类属性的名称:@Url.Action("QuestionList", "Tests", new { testId = Model.Test.ID , Page = 2, Column="xxx", Order=Ascending })或类似的东西。

此外,您似乎正在正确创建链接。为了以防万一,放一个" @"在Page前面确定,也许这是一个保留字。