2017-08-11 33 views
0

我在这里看到了用于保存一个字符串以传递到下一页的示例。但是,我没有能够找到或想出如何保存多个搜索参数,而不需要每个搜索字符串的变量,这是我不想做的事情,因为我有12个搜索字段。C#MVC保存多个搜索字符串用于分页

我已经看到了将变量保存到viewbag的示例,然后在转到下一页时传递该示例。这适用于一个变量,但不适用于多个变量。

是否有一个更有说服力的解决方案,然后必须通过每个变量的个别视图袋?

谢谢!

+1

你为什么不传递一个对象在viewbag你有变量性质说的吗? ...就像是一个正在搜索字段的“Dictionary”键,值是变量值。 – GibralterTop

+0

在我看来,这些信息应该是ViewModel的一部分。 –

回答

0

您可以使用它class这样的:

public class SearchField 
{ 
    public string Field1 { get; set; } 
    public int Field2 { get; set; } 
    // other fields 
} 

并保存对象ViewBag这样的:

SearchField objSearchField = new SearchField(); 
objSearchField.Field1="value1"; 
objSearchField.Field2 = 100; 
// set other fields 
ViewBag.SearchFields = objSearchField; 
0

您可以使用viewbag或TempData的[ “的StringID”。 tempdata可能是更好的选择。你要做的是创建一个字符串数组(或者列表可能会更好!)并将所有信息存储在该数组中。然后你将它存储在tempdata中。事情是这样的:

string[] URLs = new string[12]; 
//do stuff 
Tempdata["URLs"] = URLs; 

当你到你需要再次网址的页面,无论是在控制器或视图中的你会写:

string[] URLS = (string[])Tempdata["URLs"]; 
//do stuff 

or 

string[] URLS = Tempdata["URLs"] as string[]; 

类似的东西应该工作。你应该在其他方面的ASP MVC来传递数据读了起来:

http://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/various-ways-to-pass-data-from-controller-to-view-in-mvc/

Passing an object array as TempData[] to view

+0

如果你认为答案正确,请接受它。 –