在ASP.NET MVC中传递多个参数

时间:2013-07-16 14:57:44

标签: asp.net asp.net-mvc-3 asp.net-mvc-4

首先,我还是MVC的初学者

显然有人知道我们可以传递/ CONTROLLER / METHOD / ID,但在某些情况下,比如我需要将3-4个参数传递给控制器​​,我该怎么办?是否有一种传递它们的好方法?

下面的代码是一个处理post请求的控制器,为什么我不能使用“temp1”?它说应该在使用前宣布一个,这意味着什么?

[HttpPost]
public ActionResult Payment_Home(Wires_SWIFT temp1){
    string str = temp1.BENEFICIARY_NAME;
    DbQuery<Wires_SWIFT> dbq = db.Wires_SWIFT.Where(d => d.BENEFICIARY_NAME LIKE temp1.);
    return View();
}

2 个答案:

答案 0 :(得分:2)

使用ViewModel

这是一个包含您需要的所有值的类 - 您可以在控制器操作中填充它并将其传递给视图(如果视图强烈键入模型,则会有所帮助。

public class MyModel
{
  public string SomeValue { get; set; }
  public string SomeOtherValue { get; set; }
}

// controller
var myModel = new MyModel...
return View(myModel);

// view
@model MyModel

@Model.SomeValue

答案 1 :(得分:0)

您需要确保正确设置路线。

所以要匹配dothis/action/param1/param2,你需要一条路线,如:

routes.MapRoute(
    "MyRoute", // Route name
    "{controller}/{action}/{param1}/{param2}", // URL with parameters
new { controller = "Surveys", action = "Index", param1 = "param1", param2 = "param2" }  // Parameter defaults
);

对于实际工作的上述路线,您需要一个控制器和操作,例如

public class DoThisController : Controller
....
public ActionResult Action(int param1, int param2)
....

操作参数的类型无关紧要,但名称应与规则中定义的名称相匹配,以允许ASP.Net定位操作

在您的情况下,错误是因为您的参数被称为temp1&amp;在路线数据中没有任何东西叫做。