2

我认为这更像是一个“风格”问题。

我有一个 MVC 应用程序,它由一个主页(用户在其中输入搜索条件)和一个列表页(显示与条件匹配的项目列表)组成。

当用户在主页面请求搜索时,MainPage.cshtml 中有这段代码调用 ListPageController 来生成新页面:

var ParamString = 
  "Param1=" + Param1
  + "+Param2=" + Param2
  + "+Param3=" + Param3
  + "+Param4=" + Param4
  + "+Param5=" + Param5;
window.open(encodeURI("/ListPage/ShowList?" + ParamString), "_self");

下面是 ListPageController.cs 中 ShowList 的代码:

public ActionResult ShowList
(
  String p_Param1
, String p_Param2
, String p_Param3
, String p_Param4
, String p_Param5
)
{
    ListPageModel M = new ListPageModel;
    M.Param1 = p_Param1;
    M.Param1 = p_Param2;
    M.Param1 = p_Param3;
    M.Param1 = p_Param4;
    M.Param1 = p_Param5;
    return View("ListPage", M);
}

ListPage.cshtml 然后使用指定参数通过 jQuery Ajax 调用获取数据。

使用带有参数字符串的 window.open 是“正确”的方法吗?如果有大量参数而不是五个参数,这会不会使 URL 变得相当大?

或者,例如,窗口打开调用是否应该在 ListPageController 中,例如 jQuery .post 调用?

4

2 回答 2

1

我认为您根本不需要使用 jQuery。毕竟,当前实现的最终结果是完全从服务器重新加载页面。

最简单且在我看来最简洁的方法是让搜索字段位于带有方法“POST”和操作“/ListPage/ShowList”的老式表单内。不需要javascript!

于 2012-10-30T15:54:22.487 回答
0

在这种情况下不需要使用 JQuery。ShowList您可以通过使用HtmlHelper.Action并在此处传递输入的参数来简单地调用该操作。这也应该让你的事情变得更容易。

于 2012-10-30T16:05:20.933 回答